QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2317|回复: 7
打印 上一主题 下一主题

数据结构,清华 严蔚敏,例题代码(自己写的,持续更新中)

[复制链接]
字体大小: 正常 放大
慢跑20 实名认证       

60

主题

8

听众

3684

积分

  • TA的每日心情
    开心
    2017-2-22 14:21
  • 签到天数: 271 天

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

    群组2013年电工杯B题讨论群

    群组物联网工程师培训

    群组2013电工杯A题讨论群组

    跳转到指定楼层
    1#
    发表于 2014-3-10 21:34 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    本帖最后由 慢跑20 于 2014-3-10 21:38 编辑
    7 e2 u5 g; V: I% ^. a
    ' P1 c' a& [9 V0 }6 B; u计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。" Z$ n; y' @' y7 W/ v- a
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。0 V0 U$ v. Q, I
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

  • TA的每日心情
    开心
    2017-2-22 14:21
  • 签到天数: 271 天

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

    群组2013年电工杯B题讨论群

    群组物联网工程师培训

    群组2013电工杯A题讨论群组

    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

  • TA的每日心情
    开心
    2017-2-22 14:21
  • 签到天数: 271 天

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

    群组2013年电工杯B题讨论群

    群组物联网工程师培训

    群组2013电工杯A题讨论群组

    20页,例2.1 A,B两个集合,合并成C集合。) X/ s' F4 r* a
    这个代码是用数组的、算是比较简单的。
    4 n% s; c# _! n% s
    ; o/ Y' r8 d: [' B2 Y#include<stdio.h>& |  V! G, p: Q/ V+ v
    int L_length(char []);! J) Q4 [5 [) v  ^$ O& q% [
    int main(){
    5 {3 @* U; `( g3 A        void Union(char [],char [],char []);
    ! Y% O9 Y9 ^4 v$ U# O; M; Q$ z- ^" p; R+ l8 H' ]) ]
            char a[10];2 u3 Y3 h" `& [( [& m0 M1 u
            char b[10];) q5 D3 O$ g9 I$ E0 {
            char c[20];/ U6 K. h3 w5 L1 e
            gets(a);
    7 r. O% L: X6 T& c* w+ [        printf("输入的集合A是\n");* r; c5 j) G$ n  D0 j% k/ n
            puts(a);6 O3 T3 p/ s8 t9 N

    ; u: |* u; V% x* [# I        gets(b);
    ) i# @3 f. y- k9 |) N2 ]. ]        printf("输入的集合B是\n");
    % i% b- u4 @1 o        puts(b);' P0 h+ {( ?* O$ D0 P, U' @7 }

    $ Q2 N3 v- L$ a% U3 ?, N        Union( a, b, c);# d+ S" r: ^/ F. `8 J( m1 {) N7 S, _2 K
            printf("last得到集合C是\n");" l! e. ]7 Z0 q& u$ W
            puts(c);) Q0 ]  R- b/ q" V; I8 u5 U9 z
            return 0;* q- c. f! r  P4 P# v* b
    }" g1 R$ g: G6 F% `9 A- w

    0 m; A' j/ ?" z+ ovoid Union(char a[],char b[],char c[])6 C6 ^0 B7 d, G5 Z2 Z
    {
    - M7 `3 M" z! q9 e3 P- s$ D$ Z        int flag=1,t=0,i,j,m,n;
    & i3 Q! n2 \/ S8 Z) v/ m        m=L_length(b);
    1 C; T5 |2 x/ ~        n=L_length(a);. [- R( x9 J3 M4 p) q
            for(j=0;j<n;j++)* M7 Y  `, _- N$ C$ E7 L5 [  B5 Q
            c[j]=a[j];
    0 j1 i0 F# R( a) }  ^4 k        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    1 V, x9 W' [) r7 [5 e                {for(j=0;j<n;j++)
    * X- v, t+ \/ M: h# ?& E2 Y                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    ; A' i; o7 g0 @& [                        if(flag) {  c[n+t]=b[i];t++        ;}
    " N  v2 J1 F  Z+ I! O, A4 W/ T                }
    & {( H! U) q/ i- v) k7 p        c[n+t]='\0';
    3 E5 S  ]- ~2 u5 H) s3 Q
    " I/ l- n# d% E/ A}
    ! T9 H% f' S5 c3 n3 w6 {9 h1 r0 H& i
    int L_length(char a[])
    ' t/ C- D/ E3 O! Q4 ]: w{
    " r8 h* g9 C4 v; M1 l        int i,t=0;;; S! G/ q# o- u  m" \8 M
            for(i=0; a[i]!='\0';i++  )
    * y0 i9 \+ T' R# y" l$ |- ?                        t++;% }( d# [# O5 d0 v* o- I: E
            return t;8 G" d* x  m! ?  r9 }
    }
    2 e# d) Q) ], P, x  A$ C! l2 f$ K1 a& P* d
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

  • TA的每日心情
    开心
    2017-2-22 14:21
  • 签到天数: 271 天

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

    群组2013年电工杯B题讨论群

    群组物联网工程师培训

    群组2013电工杯A题讨论群组

    本帖最后由 慢跑20 于 2014-3-19 13:53 编辑 6 s4 E; ^" n  m% j$ v3 W  m

    * \* |8 e# D# k2 e% O& e9 e# |li2.1yong用指针:
    ) {9 @  v3 H0 s$ ~3 _# U: g% K0 ]; _) m  p4 o+ a
    #include "stdio.h"
    ) M$ s8 q) p, h5 {0 g9 ]- n#include "string.h"6 M6 o& A' O- h/ ^1 t
    void Union(char *a,char *b,char *c)
    2 F  x9 S7 u: t- C0 L6 |{
    . c; [' E6 t* `1 F- k& {8 K1 uchar *p=a;1 O0 G- a; U  l) z3 v: b
    char *q=b;
    3 N8 k0 y- \/ s! k" l, a! Tchar *r=c;
    7 K) @; X8 B# {% g% @+ E3 zwhile(*p) *r++=*p++;9 o+ Y/ u1 Q3 N, S9 H: X0 ^% {% K
    p=a;
    5 Z/ T6 r5 ^" o( T& Xfor(  ;*q!=0 ; q++,p=a  )+ E6 s8 n' G/ J& `) d& F- Q8 s
    {while(*p)0 ^" h1 g( N) x( Z. Y
    if(*q==*p){q++;p=a;}
    : G5 m1 X: R( t2 Yelse p++;+ e- j; a9 C3 b3 T' m) x' O; m- q
    *r=*q;
    ) H0 g# u6 \9 g* [6 C. x2 X- Ir++;0 t% c: P& R4 P( J9 x
    }; v( }5 ?+ ]# Q9 I7 Y
    *r=0;' e& O$ C1 Y0 E5 w( a& E: _

    ; T6 C- m' d; W4 C6 k# n. y}
    2 H3 Z+ W4 l+ g+ z( S3 G( n( p. \1 g4 y+ R- B& G7 n
    int main(){. }8 I$ `) T; R, b1 _

    8 H- \! ~- ]  Jchar a[10];
    7 a. c( `/ z% [  B, [- Uchar b[10];
    ( V) A& u+ m6 ~0 q' t& Schar c[20];
    ; \6 m; }# [/ G8 B" [) `- @3 n- }; Z7 Xgets(a);4 [8 `2 u/ h* s  n3 X
    printf("输入的集合A是\n");7 a; v, x: ]& Y" d2 }3 B
    puts(a);
      t& ]" u2 H, B5 q  s# n0 z$ F, `% A* U1 K2 g" ?
    gets(b);* I- P9 g! d, X* B% Z! q# R5 ~
    printf("输入的集合B是\n");6 @$ M: h# p7 ~- x% J
    puts(b);
    % T! ~5 u' d2 P0 h7 t0 k# l; i; F: A$ @* T$ J) N. u' {5 }9 f
    Union(a,b,c);+ L( ^' L* M1 m" @4 Y0 ~, `- Z+ y
    printf("last得到集合C是\n");& @+ L9 O* i" K" f4 k
    puts(c);  \6 n! X3 h* ~( ^, Q
    return 0;
    : R; i! e$ Z8 ?. Q8 }" s5 |  e}* k& d0 y" E' q, r4 m' }4 `' Q
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

  • TA的每日心情
    开心
    2017-2-22 14:21
  • 签到天数: 271 天

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

    群组2013年电工杯B题讨论群

    群组物联网工程师培训

    群组2013电工杯A题讨论群组

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    0 e- ^4 z/ w: W7 e1 V9 c; `#include<stdio.h>
    ) S/ l$ ^& V# T5 O. F$ s# \# P- Z1 O1 N" Z9 p+ p
      struct node
    / p- [* Q/ {( q/ o% ]6 a{- s" f/ ~; t6 \3 M7 I0 Q
            int data;
    : V0 L/ \8 B$ I: U$ ~- l        struct node *next;
    % N5 p5 T( [" e1 s& l* ?};
    2 Y8 z0 E( P! @* U# {//typedef struct node NODETYPE;0 ^, g! H! m+ x0 H0 f
    void main(), L1 g6 E4 x+ b, n# H' Y5 ^
    {
    ) w+ C" d7 l+ B# b        //NODETYPE+ a. y5 D, Q8 g& C; T" V
            node a,b,c,*h,*p;8 P7 L2 B6 _. Z
            a.data=10;b.data=20;c.data=30;* X7 @) e( t- |+ D3 X  M
            h=&a;
    $ \. }  h3 U3 y' O! p        a.next=&b;b.next=&c;c.next='\0';
    9 J& G' R$ G2 C/ ~+ g. H        p=h;
    6 o8 n4 s' d/ ^1 ~+ w- N& H0 c        while(p)
    $ s9 X- Z4 e3 s1 E# ~3 o; D& N        {
    ' |# R& Y2 O( F3 z. {                printf("%d  ",p->data);
    : u* q; i+ a; A& l. @                p=p->next;' h) g* V- A9 c6 v( S5 S6 Q
            }2 s1 l( ^; Q0 x; g2 {: T
            printf("\n");/ u1 i' a/ V) V, U1 d6 X! h" c) E4 ~
    }% r# `6 @0 ^3 s9 h$ q4 B
    ( Z5 T/ p  O5 Z0 G4 ~. `
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

  • TA的每日心情
    开心
    2017-2-22 14:21
  • 签到天数: 271 天

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

    群组2013年电工杯B题讨论群

    群组物联网工程师培训

    群组2013电工杯A题讨论群组

    此代码为生成一个链表的代码:  |8 u* r& S6 V5 x7 z
    #include<stdio.h>2 E  i8 |! q2 Z7 M
    #include<stdlib.h>
    * H  t! g. a/ a9 Pstruct slist! `8 \. k( i8 E! l6 ~
    {
    , z" R( }9 e) C4 O/ `        int data;: F" j- \$ P2 n4 @
            struct slist *next;
      M5 R$ _- w+ C};
    1 n8 t7 Y# R+ o' S" Wtypedef struct slist SLIST;
    * ^% m6 r% m1 }) g4 j3 M( gSLIST *creat_slist1()
    7 R8 j. }' V2 v+ D4 T1 P+ u3 r{
    ) M: r0 [. S, ?        int c;
    2 D9 Y+ o0 F, M1 {# a! [! X1 z) b        SLIST *h,*s,*r;
    ! \! T: O  J6 c$ |/ |% ^" u7 [7 D' Y        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    , l) M% s, D' x" K        r=h;6 D$ a! D8 L  t/ R
            scanf("%d",&c);
    ) j% P0 O/ W4 s$ G        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    ' X* l) U& m8 Z1 K6 T        {
    5 E+ e. U9 z6 g& @6 b                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    3 T# F# k" V3 F                s->data=c;' J  P; _; k) C% k
                    r->next=s;
    % T8 r9 D, w0 _& T  `4 I                r=s;
    # l' N9 M/ f* l- m+ B6 @9 b: l                scanf("%d",&c);
    - `2 X- O( D' P7 z         
    & U3 h5 ~5 s  z7 H( K        }3 _3 i( Z8 W  X) V
            r->next ='\0';1 S/ I) k$ M8 m# Z; M" A
            return h;
    ' \9 c4 X7 d8 r4 L}
    $ ~( h0 I+ P, ~6 |+ q2 s) J' Q
    8 s' ~4 ?9 p/ T1 x& U" C/*
    * O5 M; ~' x& {1 a6 l+ J3 V* x2 rprintf_list(&head)
    ( t' r/ Q% b* q$ G3 J- z{        SLIST *h,*s,*r;
    / E% o9 ?$ h+ ?7 A        int c;
    - i+ }2 V- I* i" j7 u5 {        h=(SLIST *)malloc (sizeof(SLIST) );) Q% g9 G! p, v2 j( D3 y, j
            r=h;# i* M1 W1 E1 S" V* w
            s->data=c;
    - @* ^4 z4 {, n3 G        //scanf("%d",&c);
    / V; N2 G. x% H1 {- ?        while (c!=-1)
    * f, S0 G! Y" S/ n* R( z        {
    ! Y! ^! H) @; ]5 ^                printf("%d",c);) ~, k, ~$ f1 a. D. O3 _
                    s=(SLIST *)malloc(sizeof(SLIST) );
    & L' l  @4 e$ R                s->data=c;, r# }: y0 J. p! f4 G
                    r->next=s;& S( b8 F* ^* e6 a$ _/ N
                    r=s;, m7 A. q$ Q  {4 ]# n. J# m$ K
                   
    7 W. }( T6 s8 `; L# Q) t         
    5 ^) \$ p2 @& o4 N8 f        }
    , U2 |% I8 [6 W5 Z! J+ U        r->next ='\0';: ~. F- I; k: n. W+ O
            return h;. }: y  @! i9 g3 g: H+ q
    }6 K4 c- s1 j: ^7 M) q5 ~+ a8 f% Z
    */$ \6 l5 t+ Q# l- Y$ @% c. W5 \
    void main()
    " w9 D; i$ m, i{ SLIST *head;( k! z6 w0 j- E: [
    2 `. g% Z3 D+ S$ V3 K) d
    head=creat_slist1();                //调用链表建立函数,得到头结点地址  E0 Z; K* b! O( _5 w3 y
    printf_list(head)
    # }0 i# k2 z8 y% b/ N; Q% P}, y" {' B8 x) }. f5 \9 e
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

  • TA的每日心情
    开心
    2017-2-22 14:21
  • 签到天数: 271 天

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

    群组2013年电工杯B题讨论群

    群组物联网工程师培训

    群组2013电工杯A题讨论群组

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。3 x( o8 ]6 N& p5 J

    0 t0 X' m9 ~5 k) M#include<stdio.h>
    : J# h7 C/ v* o$ ~: i( o #include<stdlib.h>
    " s5 q  i" S4 d8 w " k7 N- G- m+ q/ J8 O
    struct slist
    6 u; u) T) `$ J# d" x9 N, ]  {
    ( `% v4 `' e, D- y; X1 _( V  int data;0 T7 K5 G7 U# h+ ]
      struct slist *next;
    ! Q1 i7 n1 `/ q+ g  };
    5 w) h! O; `1 V0 C% o: N  typedef struct slist SLIST;
    2 N2 m* w; c: C* g; H 1 F0 ~) Q4 L; r, G
    SLIST *creat_slist1()
    4 H; S7 w# P. }5 ~8 r. `  {& [) \# g; _4 d, E
      int c;0 X' S5 F+ j- _: G$ ?2 I
      SLIST *h,*s,*r;
    # D/ ~5 D( L" H& }+ E* w$ w* g5 _  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    ; h" U& [4 G( l! x7 Hr=h;
    + ^& M( I/ C* ]# B  scanf("%d",&c);7 O4 B+ O. g! t& g; T' i
      while (c!=-1) //当输入的c为-1时,代表输入结束( {0 ]. F3 k5 U7 `- R
    {
    7 V# x! g* Y0 `8 l+ f! }& |( m6 E7 {s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    - b) C1 s8 C" Cs->data=c;0 @, r/ R/ P4 p) o' I$ n
      r->next=s;
    5 M; q5 b$ D7 J# t  r=s;
    7 h) X- n+ u' ?: G8 X  scanf("%d",&c);
    / F5 ?% f6 F3 M( h" E , F) f2 C. N* \$ `! a  O6 n& |. f
    }
    5 r; h# S' p# D, a& {: T3 T  r->next ='\0';
    $ h: h& A( E8 I2 o: p: F  return h;
    - G, v2 s7 D5 S# Y) u  }
    * E' L  u: W. K/ n3 m/ I" u
    8 \: f# `' z# n4 S. }5 P1 e/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?) G, _4 g6 L2 n/ R
    int printf_list(SLIST *h)/ [; Z7 N# _( [6 T3 C
      {
    8 q, W+ ~% U- W7 j  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚8 s# H  w  Q) R( D, n; u7 J3 f4 T
    while (h->next!=0 )7 R5 x+ \. E  `! I1 }1 U# F
      {* C2 }' V0 B" E- d9 v' v
      printf("%d\n",h->next->data );
    0 A) W* M% U$ k# M; `: |8 B8 d  h=h->next ;
    3 @: U0 p2 b3 C+ B' J  }
    ) u; q# F0 o7 Y* l$ D  return 1;
    - y/ e. W% d. ?5 ]" x5 C, j  }
    " b. A& {& H% r) z; w$ I$ R  /**/
    ; R" A+ K7 t- [8 A void main()
    6 H! q3 A/ ]4 g  Q( E" |  { SLIST *head;& B& X% v/ ^3 S

    " N" j" l8 n' ihead=creat_slist1(); //调用链表建立函数,得到头结点地址# g! N5 {: c6 r. f
    printf_list(head);6 l$ ?. L- T, W  u( l; a2 E
      }
    ! I$ J7 g6 q; _7 O6 V2 [
    7 a( W# `% r* H9 f( I% Q6 g$ n; h  K
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    8#
    无效楼层,该帖已经被删除
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-19 04:47 , Processed in 0.520253 second(s), 89 queries .

    回顶部