QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2395|回复: 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 编辑
    * H$ h" o" n$ f; Z0 P7 y0 {* K$ Z5 `4 r- M8 q3 c" f) u
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。. N4 {: ]7 V7 ~3 }% S
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。1 X' H2 p# ?2 o( ]1 @
    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集合。
    8 a$ K! F4 I) H/ R' O0 d这个代码是用数组的、算是比较简单的。, V! p  ]# t/ z2 Y1 K5 f. D+ S
    4 A) T, f1 v$ e8 z- m& P
    #include<stdio.h>. V* t/ p% y* ?' F; m8 E
    int L_length(char []);
    ! b- G6 m. Z" p6 r- v( I+ Tint main(){* O9 _' J  m+ N6 h! K, b% @2 D
            void Union(char [],char [],char []);
    ) o' O/ l7 ~4 s5 t
    % p( z+ M9 t$ [8 a. L/ J( M$ t' V5 h0 @        char a[10];
    + N5 a7 G4 D; m. }        char b[10];3 Z( W" L, k% k' X0 p. z
            char c[20];& C* l; l# `8 ?. g9 B% X* `, k8 D
            gets(a);
    1 Z# ?8 ~4 \, ~$ K3 P        printf("输入的集合A是\n");1 V, _7 D8 h4 j+ D0 I' C
            puts(a);3 D* R& e& Z0 }. Y

    4 N2 u% j. O* O( V; I* c        gets(b);
    " f- n% q' u) E3 `1 _        printf("输入的集合B是\n");
    8 n6 P% }/ ^& _: R3 b        puts(b);% b2 h* g. k# b7 P, K/ U5 {8 H8 Q

    0 `' A+ ]4 O+ N, j# G, Q1 a        Union( a, b, c);3 Q  p( `7 {& I$ y
            printf("last得到集合C是\n");3 e% W2 ?6 q3 H% D* Q3 J
            puts(c);5 z( C& O, I% I& K; V% |
            return 0;% I8 B( Z' Z, S2 L) N( S
    }
    1 M' m0 K( w  P6 G! Q' \8 l, y/ x. C
    " T( b4 `2 _) z$ e3 Bvoid Union(char a[],char b[],char c[])/ x0 w* _- n7 \2 _4 M. X
    {% U9 ?, V  X# g9 h& u" c5 O  ?9 `
            int flag=1,t=0,i,j,m,n;
    ! Z' a( y) ~. ?# M' i& b1 \" q3 E        m=L_length(b);
      l3 q8 _( ]% q1 Q        n=L_length(a);' }6 J4 n! {, f  v% x, l' P
            for(j=0;j<n;j++)
    3 H  V$ B6 x: [* U        c[j]=a[j];
    & o7 O  w# N4 z" C6 ?" _# E: I        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;7 o: X- x3 }2 R% D8 D% W- ^$ C- J2 ~
                    {for(j=0;j<n;j++)
    2 h2 I1 }' X. T# P7 D$ o$ p1 R% [% z                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    - a& m4 Y' @" n0 W                        if(flag) {  c[n+t]=b[i];t++        ;}. R( A+ ^$ L- \- F' M& A/ j
                    }# q3 I) [9 e1 l7 _  J1 j5 X$ l
            c[n+t]='\0';9 d3 v2 H; {4 j

    8 [: B; x! Q4 h5 G}
    " o/ ]6 ]+ u! N4 Y
    ) i0 P9 E8 r0 U$ f3 k4 k! Oint L_length(char a[])7 F: J3 M8 C/ N, V; C$ n
    {6 y, x: _3 Q5 B- a6 M3 N( l$ k5 |
            int i,t=0;;# q/ B# g3 t; W$ ], l2 K0 o5 q
            for(i=0; a[i]!='\0';i++  )
    , T8 z! G! ^  r  L8 B: }# Y                        t++;8 ^9 h; X0 R- D! ~/ i) `# G
            return t;
    7 R. L' i+ D8 G& e} / Y( k6 f3 m  |! ]1 G3 x8 }
      S, `% K. s6 T; 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 编辑 3 i2 l! ~% I0 E0 b' d8 E  K
    & \* T# G. ?3 Q+ z
    li2.1yong用指针:0 T' C4 h8 E/ ?6 D" }' G2 Z, n  G

    6 K# o/ a( E9 @9 H" U6 \& a. a+ C#include "stdio.h"2 H* v0 A. v/ p1 s* Z+ c
    #include "string.h"5 }- q- ^# b- z
    void Union(char *a,char *b,char *c)
    - A9 }' R/ G  s& A: t# W$ w{6 ~5 l/ s0 D: ?/ ]
    char *p=a;
    ) t+ m+ H# f$ ]2 A2 B; x0 Fchar *q=b;6 S( c  A- F: F
    char *r=c;# ?1 k" J0 V- M5 S! L
    while(*p) *r++=*p++;
    $ A1 E8 H' `0 @4 Y% I& Kp=a;! t7 L6 S- Z* v2 P
    for(  ;*q!=0 ; q++,p=a  )
    8 e4 b4 P. c, b4 X. Y{while(*p)
    * W# B* K, [$ ?0 E* @0 ?if(*q==*p){q++;p=a;}; l# L8 r5 o2 }; d, d8 I3 X9 f$ {% P
    else p++;8 M; L+ q" O5 w# C7 ^
    *r=*q;
    5 j' s0 R6 Y& Y/ \5 ~r++;
    3 h& p6 u2 x4 O7 Y}6 I6 `4 |& H4 e& z' f
    *r=0;
    5 B; T) e9 t, c$ k7 v/ T- r! @! Y! Z; A+ m) o
    }
    1 O* r" r# t8 W7 ^- g* Y
    3 w9 h, o, z7 @, k& x- bint main(){
    6 r' ~7 B1 b9 @6 J" w. j/ J* N/ p7 j$ `
    char a[10];1 B! o7 d% O$ r" a+ @. [7 H
    char b[10];
      d# ~" f8 v  K2 f, Hchar c[20];
    . T, _/ ]0 U, K0 Vgets(a);
    / y0 I& W! P; n- aprintf("输入的集合A是\n");+ P  y* q( h  T
    puts(a);
    - Q* y: u: ~: o
    8 E0 `  ]8 J6 l/ M; b" mgets(b);
    8 U8 M# `" J+ b) ]printf("输入的集合B是\n");
    + L2 E8 r, N  `# h/ Q/ a6 kputs(b);
    " K0 I- ^# A- R1 o) ~+ n
    $ x# H7 r4 U) v. m- c* T8 NUnion(a,b,c);
    ; K6 ?$ ^& F: A) z, F. zprintf("last得到集合C是\n");5 r, `; S# U, G3 |
    puts(c);
    ! z, Z4 Q9 C- B  ^% _+ sreturn 0;& J4 i" I6 e' \; e# l' v7 [
    }5 v# g" b  P. I4 C4 \; l% I/ X
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    % \% V- N* P# Q, A" q#include<stdio.h>6 e! J: p, B. B7 B2 H/ Z! S
    + \+ _% k2 R2 i# k( G5 u  X
      struct node
    8 U& y+ _5 j8 T{8 N6 n; n4 J+ {; `8 m  W- P
            int data;! d1 N4 w0 a# z/ w
            struct node *next;
    % E  W& S: m, ~* k( ]% e$ S};
    ; {. Q; J4 k9 I8 _" p6 ^//typedef struct node NODETYPE;
    1 L5 V& ]9 b1 H% E5 vvoid main()
    , ^( Q4 x, M/ B6 z% j1 h- E{6 a7 P: F  f* M0 f1 D2 |
            //NODETYPE
    7 h$ J% Z, Y, V8 L! {        node a,b,c,*h,*p;
    * R; o: h8 x7 c: p3 R        a.data=10;b.data=20;c.data=30;
      S5 f: I4 z# }. {1 z" K6 Q2 e        h=&a;) i* T' x$ Y( A* D/ B# W9 \+ P
            a.next=&b;b.next=&c;c.next='\0';
    ( C( B/ w9 x& }- U  a" q% @        p=h;5 X6 c: Y( ~6 R" f7 h- e1 E" X
            while(p)( B( X, k1 _! f( d. z* G
            {; C+ Q' r! m; o1 L
                    printf("%d  ",p->data);1 |8 K4 X7 ?( H5 A
                    p=p->next;
      P5 n8 Q5 a2 b0 \) a, D        }" H9 I5 v, `: R3 u# }+ M9 g7 w
            printf("\n");
    , g0 _: ~; F! R, }2 i}+ c3 y$ e2 }/ Y

      }# g5 O) D/ d这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:$ }" C- A6 }& V! c. Z* H
    #include<stdio.h>' T5 C1 z( i+ _6 j% s; E, G
    #include<stdlib.h>: F8 P+ A4 ]7 d( \& V
    struct slist
    ( a6 {, j" ?1 o  B, b. Q- m{
    2 c! q9 n4 J4 G4 H+ j        int data;
    . H5 t, x+ _9 a0 [, Z        struct slist *next;1 ~# {' q  ?& w" ~) y
    };
    : g) w$ V& W1 ?6 v+ wtypedef struct slist SLIST;3 l* e- R$ Q& Y2 l9 Y
    SLIST *creat_slist1()* Q$ f8 Y6 M# a% t
    {4 I$ n$ _. ]' b7 b  f) l% O
            int c;
    3 f% z9 J- j' i" h* U1 ]' H7 N- Y9 ^        SLIST *h,*s,*r;
    & d( d; M6 p% N$ B1 K        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    ! o& G, [7 v: `' G! I        r=h;
    4 u; E* \. E3 O" m4 {1 j7 p& n        scanf("%d",&c);5 p3 f$ K, |/ z* d- l# X
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    $ @0 f8 G6 {/ g* ~9 {+ k        {
    . b; ~) B5 x5 V( `8 ^                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    ( D# k2 W4 S. {                s->data=c;
    9 z# P3 h* S4 g) Q                r->next=s;
    ) @5 G" h0 F+ e" Q9 D                r=s;
    % J' R. y! W; _' J  g, P+ D& U                scanf("%d",&c);& ^; w) `. {- K
             % V2 K7 q' O8 T4 U4 z; K
            }/ n# q0 p# j3 b$ h9 g% G: p
            r->next ='\0';
    5 R$ l6 j9 `: A9 j- S        return h;  J* ~3 {& X( q0 H& ^! W
    }
    ) V. l( A' x; m% ]) W; b! W2 g# Z# u1 m: m  Z; _# U
    /*  F+ {4 ?7 ^$ i: U9 S- M* a* r5 q
    printf_list(&head)
    / O# L# A) C  t0 e4 B8 \+ r{        SLIST *h,*s,*r;
    ' u, o" E2 p  G( D  c" O& k4 n4 j        int c;
    * F4 f/ n7 o6 A. I& i        h=(SLIST *)malloc (sizeof(SLIST) );
    & _1 g1 A, f$ R* g6 x$ q3 l7 w! D        r=h;
    3 o2 l) T- ^9 P0 I1 f9 T8 e6 d% a        s->data=c;" C4 N# s1 ~, W$ c' B1 E
            //scanf("%d",&c);
    " Y6 z$ D( b8 H' O& Q: D        while (c!=-1)& I# _. S3 ?  `1 Z( K' k; S$ l( x
            {* v7 a) i& o0 `* b! n1 j& i4 ^
                    printf("%d",c);
    ' g5 d) E4 y5 j9 F! x                s=(SLIST *)malloc(sizeof(SLIST) );
    # x# Y" m( T$ V& c& m* U  e3 F" u                s->data=c;
    $ D! s! h' i1 ^                r->next=s;
    - I# t2 N3 K0 J9 j8 C4 X                r=s;( N0 j; e: [; I( i
                   
    ) t5 l+ }  v- e& ]+ T, R: Y; k4 M$ o         
    ( w2 ^9 }- G  _! J' r        }
    - w7 L/ s/ i& V9 O" k$ w2 H$ ~3 Y        r->next ='\0';6 p1 c6 u: \# T7 A1 S
            return h;& t% D" P3 w, |  }- g# d6 l
    }/ _: r# C/ z2 C7 `
    */
    : J( F8 F# ?9 _void main()
    1 `% R+ I- B* q{ SLIST *head;
    : z, ]* k  p% e/ g% }* i% v
    4 F8 ?) h+ l1 N( |5 N  w8 ^+ N4 ?head=creat_slist1();                //调用链表建立函数,得到头结点地址2 d. `  _) A# g+ o9 n* R  D# c
    printf_list(head)
    % I/ k5 [6 A8 ^7 G2 _5 O; b1 E}
    " r1 e, Z* s7 Q; D+ |& ~9 _; ~8 \* J; Y
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。: z6 ?# c1 r0 Y0 m8 J" H! k
    7 T  W/ k, c7 W$ O* {+ j
    #include<stdio.h>, i8 A$ D8 Y+ H, Q. \5 a! V3 j$ b
    #include<stdlib.h>$ @9 c# l. u4 Z) p' }8 o

    # b; K( Y2 ?$ p! Q$ a struct slist
    6 y- C6 v3 E1 O( Q' ]! m# {  {
    ) D8 E; y, g3 U2 @2 \5 Q) |  int data;
    / b8 T& m. z4 `! o3 `/ V% T  struct slist *next;
    & `% L: B6 x. k9 n) F% t  };
    : s+ Y' Q2 }; o9 s" m' L! Z7 v, H  typedef struct slist SLIST;% F$ y' k5 f9 F2 m9 ?
    . v" c5 _: Y& E+ p
    SLIST *creat_slist1()6 v2 i, d( U4 a6 D$ `
      {9 D& `0 K! g. o) v8 A. \
      int c;. T% S+ y7 o1 ?3 N8 M2 \! l
      SLIST *h,*s,*r;$ e0 Y% N( W! e$ k. r3 E1 S. J
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    ' z8 u% V/ ]+ O* Lr=h;/ |! |4 y, i4 [' u! b3 l% g# r
      scanf("%d",&c);/ i6 w1 V5 d1 d8 R" A& f
      while (c!=-1) //当输入的c为-1时,代表输入结束
    0 r7 k* o! M* K6 Z{
    , W5 p9 ?! w+ W. f8 gs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点3 L/ a& t' I; S, X( U
    s->data=c;
    : f  P- ?+ j) Y  r->next=s;/ f# n. c+ N9 v$ W. z8 J
      r=s;6 U) [3 T+ B! }# m0 p3 G% U
      scanf("%d",&c);
    ' I: t" f7 E: @$ U
    ! y4 E/ d+ g/ I  F& j}3 i) j) |; ?# }1 [/ m
      r->next ='\0';
    8 g! U/ H+ k/ C6 ~  return h;
    4 x! X# x" t% V* t( i1 T  }
    ! m, f1 c- Y6 u; |
    , Q; \/ t; L  [2 b0 T4 t/ [/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?% ?" ?, x( _) Y0 U
    int printf_list(SLIST *h); k: y! p$ a! E0 _; U- c0 k
      {
    ; g8 |0 [; h9 U: L) T  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚. Q6 E9 C) ?6 i
    while (h->next!=0 )2 A: v# k6 A  \* H$ D
      {
    ; M' K2 o9 a  Z/ S  printf("%d\n",h->next->data );
    ; ^0 J) ^+ H6 P5 ]  h=h->next ;: M) Z+ w% K$ y' b- g) }
      }* j+ |5 @: }" \, c1 c
      return 1;
    + O( E4 [  `: k9 u  }0 P  P1 H, R! K; Q7 o: E. k
      /**/
      L1 S0 Y1 g2 V1 v) _6 X void main()
    3 s. j: F+ b. u: o$ s! [; r1 _2 D7 O  { SLIST *head;
      x/ I; y9 R0 G3 W0 k 3 ]8 O: g3 l* Z3 G
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    ( c5 T: U6 W: m3 I1 W4 @& Rprintf_list(head);
    8 J& T  D2 a  \7 q% @: v  }* u7 k  {( Y/ H* {; J$ E* L$ |

    / H- J8 `9 Q4 u  }, \& z9 x
    # C) p1 z# C: Y$ o2 F" ]此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-14 09:53 , Processed in 0.435757 second(s), 90 queries .

    回顶部