QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2434|回复: 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 编辑 5 H& M) V9 J* v# u
    $ w( L. M' J' Z8 C" z: Q0 U, ~  \
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    8 ]% z, c! r5 A( J2 x! P2 g' h刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。9 Z7 E) |4 k  K# L2 @$ d. m% G2 y
    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集合。0 |. e8 a: y8 K) g/ R
    这个代码是用数组的、算是比较简单的。
    ' V4 u2 O/ X( Z' M6 [% K9 {8 X1 `4 k6 U4 z  Z, l
    #include<stdio.h>: s) \, ~' _; Z; a! c' Z
    int L_length(char []);  G0 x6 o& d1 [+ w% X+ n
    int main(){
    % ^. o' R+ `- ]- v) v2 e: \        void Union(char [],char [],char []);
    , U7 W0 X; O6 ~/ e
    + E" U+ ]% P/ m" v        char a[10];2 ]( _' p, K/ T! A
            char b[10];
    2 z0 T' ^0 w- K% [        char c[20];& c/ d0 U8 @7 q; H2 f! I- e
            gets(a);1 |6 H0 `; v: s$ k* Y
            printf("输入的集合A是\n");
    1 i* c& _3 M, E/ o& u, x6 R        puts(a);
    3 r/ ?: r$ T7 ?& A. t( A
    + C; M2 {3 `' M        gets(b);7 m! ?4 S# r1 s6 o$ b/ P7 e% N, L
            printf("输入的集合B是\n");+ t6 f3 v  l5 w6 {! {
            puts(b);" ~" C' Z# ~- g0 s! T/ [5 k/ g7 B

    2 `  \9 h0 Q  G; e( V3 |        Union( a, b, c);, n2 k1 @; c5 P# J8 G
            printf("last得到集合C是\n");
    - @9 W% P: G/ p2 B5 ^' w) |, ^        puts(c);
    - L8 G: T3 V6 Q6 y$ [; N        return 0;& y1 m: N5 t% Y7 I7 h; e! v
    }7 r3 @8 z9 j, G3 G8 y2 X
    0 v$ }% h  D6 O5 W+ J' n3 ?
    void Union(char a[],char b[],char c[])" i- U8 t; r1 a. S- ~+ X4 ]
    {* Y9 B" ^9 W6 G/ Y. s& l; V" d/ \
            int flag=1,t=0,i,j,m,n;
    $ C# s/ U  }9 ~- v1 \" }7 X        m=L_length(b);
    1 O7 C- |: I- S  y7 A        n=L_length(a);
    & h9 r" h2 [! n- Y5 m% `        for(j=0;j<n;j++)% B$ K8 W2 i8 @  E0 U$ H* T% w7 `
            c[j]=a[j];0 M' X! D3 F3 A
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;! t2 D7 ]: `8 \' Y1 S" X7 w
                    {for(j=0;j<n;j++)8 y! v9 K/ ?5 J
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    % v! G+ W. ^/ Q; I) j; s                        if(flag) {  c[n+t]=b[i];t++        ;}% q# ^: q+ l$ @" z8 L; _
                    }* {8 d" i% s+ V" v
            c[n+t]='\0';
    " A. ^8 F; W) T! o' n' H$ n / _* Q' }5 S- Y, S0 R7 T
    }
    ) r7 c$ T8 g9 k5 s7 h- C9 b! A
    int L_length(char a[])" u4 C" j, M- E( p2 U
    {
    : S5 b+ h7 Q& C' m7 C9 O1 _        int i,t=0;;+ L3 q* M' s' u: }8 W7 M
            for(i=0; a[i]!='\0';i++  )2 L: e$ q* K; M4 I% N
                            t++;
    2 P' K/ P  [  w* |; i# ^        return t;, j; M/ ?+ p6 v/ R. c+ |
    }
    5 B4 ^: S4 I: y& Z( m, Q# i) o" y  r+ z
    回复

    使用道具 举报

    慢跑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 编辑
    & u$ e1 ]( y4 v. p' _6 v6 S5 x# |8 y2 p6 P0 j4 y
    li2.1yong用指针:
    ! K* y8 M. o# a$ u9 C  c# ~
    . r- \1 W2 T$ H3 P# s3 X/ s#include "stdio.h") v; r3 c6 }0 J! P
    #include "string.h"
    2 M/ x( h& L4 O4 Q' g. evoid Union(char *a,char *b,char *c)
    5 k& W# U/ L( f{+ D: z- U% p* j* T
    char *p=a;/ B5 h0 W, {' B' B; m# @. `
    char *q=b;4 o# o; w3 X0 g
    char *r=c;* F% M! ~+ Z; [0 x
    while(*p) *r++=*p++;
    . Z# x9 S. x( o, U7 ^p=a;
    $ {7 ?: _1 x7 ffor(  ;*q!=0 ; q++,p=a  )
    7 H! p  H  G; K8 C4 L( S{while(*p)
    , C% t. a4 F  }& `) f( r" wif(*q==*p){q++;p=a;}3 {- m' F, Y& l+ A
    else p++;
    . q1 d4 v& m8 `: U- N+ G6 N' k# l*r=*q;" |2 }$ H1 ]" W4 V1 B
    r++;7 n% N4 H' a; t7 H; a
    }* M! l, G. [# X2 R/ [$ r
    *r=0;
    0 t' K' K9 v/ |
    0 J: Q. i5 A" g( v; [. Y}6 L. l* o( r! ?; K% O
    + E+ d! Z2 g3 I# \% W  W9 J/ L# \, T
    int main(){# S5 T3 j/ @! ?' f- l
    + E% O- I& a6 G; ~! L
    char a[10];
    * z; ]. H1 ~! `1 V, g5 a$ n8 {3 q; Xchar b[10];
    / X& m! M7 S6 H- a3 C1 v5 Q& mchar c[20];  z4 x7 N$ E4 e8 G3 t* K
    gets(a);, I, M' Y% F8 H+ h6 G
    printf("输入的集合A是\n");, ^: F& d8 m3 F' Z1 h8 \- V
    puts(a);  c$ a  A- k# x0 y
    . [" G+ o+ J9 r2 a9 M
    gets(b);! e" B9 W" v2 g
    printf("输入的集合B是\n");3 X! F: k: l4 Q8 x0 s* F: d
    puts(b);6 Q; E- w" ?) Y. c, a6 H

    ' ?- @% r( O1 P9 G* u' U1 \7 jUnion(a,b,c);
    * r) \0 j/ S9 s8 }( k, Pprintf("last得到集合C是\n");
    : }* G0 S  Q! e0 L/ J$ mputs(c);6 A7 t" y; N5 r7 A1 X
    return 0;
    3 E+ u  r# B% O) @! u, t# v* q}
    6 ]. R* V; m2 f. _  k
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:  ]1 I' }( u, D
    #include<stdio.h>
    % s! {  @$ Y$ \+ j3 e% n- _6 V
    + m" Z. ?. o. r  struct node2 n" v' z; b+ z  D
    {
    + P# J* W3 u- @  B        int data;
    # V% W# F! x0 [9 Z3 _; F' b2 R        struct node *next;8 A' G4 a* A" _0 }& U
    };* I- E* m* k3 M: F& ]
    //typedef struct node NODETYPE;
    2 A: H& u9 `% G' u* z- L+ y, W9 ?% Hvoid main()/ F- L% o( U* u
    {
    ) h1 `" f: W1 h  a8 P$ h        //NODETYPE, T4 }' x9 F: V& K' e7 [( b
            node a,b,c,*h,*p;+ |- X0 j( L6 {4 o* }. @
            a.data=10;b.data=20;c.data=30;6 Q; p4 {2 Z! ]4 S) l0 |0 u0 b; J
            h=&a;
    2 y+ S% R$ N6 p! x, a& {        a.next=&b;b.next=&c;c.next='\0';
      n; |" G, L  ^& ]6 q  I, q- |/ T        p=h;# b0 x8 R: ~1 v' J# U) u
            while(p). }, d! X$ u& I/ f
            {
    ) G6 G. F1 d1 ^$ A                printf("%d  ",p->data);% s0 \% t/ H! C) ?; b
                    p=p->next;
    ! l! l5 G3 t' [: W7 I& D        }# j  J2 d% t! d+ m* {" G7 M$ E
            printf("\n");
    + Z* e+ |! `+ N, ?* s* C}
    % \; n+ A- X6 T; T# j" i0 |5 `$ V! D2 c+ m
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:# ?0 n3 Y; c3 Y7 ^
    #include<stdio.h>. f3 a  t3 o% I
    #include<stdlib.h>  |+ b  q) J8 U2 o6 Q  R8 m
    struct slist
    - C) D8 t) Z* b* x2 S  ^{
    # U- m$ \* x/ C& g- r3 D5 j        int data;$ h9 J& ?# ]) E, K1 c' G
            struct slist *next;
    / v% n1 C( B2 s};
    9 k, p3 W0 x7 g% C7 O2 C. K) c; Jtypedef struct slist SLIST;
    9 l0 D" A4 h2 r, uSLIST *creat_slist1()
      Z/ I7 V, H, ?& P5 l2 M{
    4 S  P7 K# W( q4 {9 F        int c;
    ; q# n% i( L. E, |. x        SLIST *h,*s,*r;8 T2 J- Q2 L9 f; J4 _" G
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    0 f0 J1 s: c% J" Y5 ~        r=h;& d! B2 ?8 A+ I* B5 |
            scanf("%d",&c);
    . f: m) C" y) a% A1 m7 U* J        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    7 H8 G) p6 ~5 k/ Y        {
    ' r6 }& ~+ D& p% F- S                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    3 ]- I4 H" |# G$ @  U4 T                s->data=c;; u6 Q) r4 g1 K
                    r->next=s;7 l) o* F+ x% F& G
                    r=s;
    ) v; @; p: b6 Z# C9 C3 W                scanf("%d",&c);
      B( D& `$ ]; j: d7 m$ ]: H         0 V: u+ ~7 Z2 q  T! a3 {
            }4 q& c$ g* a% i( J- p- K. S
            r->next ='\0';
    / F( `7 i) d. O3 F+ s6 v3 l5 m        return h;
    + X" ~5 K1 R, t* m1 n) S/ f- |/ C}
    % N7 G7 i& T- {- {; h) ]/ k
    # k4 u3 p0 l% l- I/*
    $ i- u0 X9 b: `/ Yprintf_list(&head)
    : N8 ?% @$ o  C2 R5 y{        SLIST *h,*s,*r;
    " f9 J8 k+ O, o8 j        int c;  U! n4 ^! t2 f0 j: Z% v7 Q
            h=(SLIST *)malloc (sizeof(SLIST) );2 E" `6 K: {1 b, Z! q
            r=h;' v' Z4 `8 q- o3 g+ B9 f
            s->data=c;
    % Z/ R$ \) V, b) v( j  F        //scanf("%d",&c);
    6 S: F5 E8 h9 g        while (c!=-1)8 b! M& n7 c! Y* w7 U5 c- ^. ]
            {
    8 V/ p. J7 N: B" Y% d7 G                printf("%d",c);# H* ?- Y( M, F8 Y7 E1 w) D
                    s=(SLIST *)malloc(sizeof(SLIST) );$ x' Q/ \: t8 S9 @) I
                    s->data=c;
    5 k$ a( x3 a0 s1 v                r->next=s;
    $ c1 D4 d; q0 |% x                r=s;
    3 `1 ^8 U) y9 g* i  L               
    4 b6 Z# B# j: d& ~  r- G         - k7 R5 Z( b  x  }5 n
            }* W& y, g* K0 O9 `" M4 b) n
            r->next ='\0';
    4 ?4 J% y1 v4 r9 [7 Y! V        return h;4 q% \/ w* k' t. b- v6 q; i
    }
    # o; g' s( p0 ^& w9 `*/
    ) ]# }0 a0 Y( _4 i- \void main()9 q& x$ s  Y! ^
    { SLIST *head;
    2 ^6 x3 {* }1 |2 P
    & o4 n7 y8 ~4 w' I, L7 H% w# a' j& fhead=creat_slist1();                //调用链表建立函数,得到头结点地址
    % h. M8 R5 }' Y% Q3 H2 nprintf_list(head)
    7 j/ V& t1 Y  h( C1 L}
    6 h* N8 [* ]7 L4 _& N/ Z
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
      l* j7 Z8 P+ D& W' Y. z. J9 |2 l$ t/ c6 x0 A
    #include<stdio.h>. I4 ^1 q8 e2 y: p6 b' c+ x5 b
    #include<stdlib.h>' |3 N) b9 L; h2 _

    ( J+ n# ~- e' ?. E$ X: E struct slist" q4 t' C* E/ x5 O  \; J! B
      {5 Y7 B1 ~  ]5 y4 ~* T( }! @1 [2 ~
      int data;; N9 C8 N: w5 _4 Z5 c* y. o* X
      struct slist *next;0 y; @5 t, E+ Q7 I" T+ i8 B
      };
    5 x6 s6 b5 }  @6 y! \" B) q  typedef struct slist SLIST;. V/ w; r. U2 K+ B" Y5 `
    , i/ V2 W; C  Z% \) N" H2 H
    SLIST *creat_slist1()
    1 v7 ]# O/ J& {  {
    # r+ ?4 |, y* C$ |7 a# |8 L  int c;
    - s. r" Q/ X5 P6 C8 J  SLIST *h,*s,*r;
    - P7 @( _( h; G! t' g+ b  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点; T' U1 d4 D* x8 u
    r=h;
    % u# M1 Q5 l/ s4 q  M  scanf("%d",&c);7 T; u9 o0 y) ~6 }0 I2 \* [( w/ H
      while (c!=-1) //当输入的c为-1时,代表输入结束
    * ~$ p/ b" T8 b/ L2 Q+ H" E{
    5 e2 x8 [6 V6 L1 O$ {. Ss=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    8 g9 M& Y) V+ \( us->data=c;3 g7 ?( W/ |( ~5 t7 v' y' ?2 R
      r->next=s;
    / O. q) @; b: W/ f& D! H  r=s;
    & p/ B& n3 o8 U4 E! @* I6 D; g  scanf("%d",&c);( z/ A' Z' v! d: _( E! |

    , w+ m0 A. E: `3 S5 l% g3 ]- _}
    5 M3 V6 V5 y% _8 x  r->next ='\0';9 O- F5 @/ c, B1 [- _/ H
      return h;
    + L! s& A: o8 A4 p; S  }
    7 C1 M6 |; v: g0 a : x; l, v- B5 g8 C8 Y, a, T
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?2 u% Z! {2 c* U" K3 B
    int printf_list(SLIST *h): ?- w* n+ L/ t/ k* @, U  R* T
      {
    ! z( N6 ]3 s+ S/ o  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    - ?& @- R5 S* E2 x$ D, ~ while (h->next!=0 )" s. C2 P9 x* ~, G. J) z7 `+ r) P6 L
      {3 l4 i$ s, L. \& |$ l7 K
      printf("%d\n",h->next->data );
    ; L% B) i& x( s( u0 ^& T  h=h->next ;
    1 W+ _' x1 e; P3 e0 I8 w5 T* O  }
    $ w$ u$ F1 A0 m3 I7 ~  return 1;- |. U2 R& @$ C# {
      }; C( w8 r5 b9 Y& }9 D- y4 T/ W
      /**/9 f/ L! e# K8 \3 Z* E
    void main()+ u& m- I1 Q) M4 n, z$ Q- Y2 p1 B4 H3 I
      { SLIST *head;
    ; l7 u1 E& a7 {  s6 \( E( y1 F ( E+ F: K. p6 |2 P! t3 Y
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    ( `# X0 m* t3 a- r% J5 d( r# Gprintf_list(head);
    % ]1 g/ V& y& t+ i0 R4 ^- a/ ~" q9 ?  }/ w! K, l. d: C
    8 P1 o' J1 K/ M
    * D& C0 y) d0 ~+ d8 n; T+ ]
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-2 19:42 , Processed in 0.703852 second(s), 90 queries .

    回顶部