QQ登录

只需要一步,快速开始

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

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

[复制链接]
字体大小: 正常 放大
慢跑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 编辑 ; ~0 P7 G" p$ r4 d, C' I
    0 X& n. J/ h7 R9 w/ s8 e
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。4 F' G* T; K1 y1 i) e
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    ' e7 E" y* ~4 P% o% Q8 H- O
    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集合。
    + s+ \3 J! x) m, x; c6 ]" P这个代码是用数组的、算是比较简单的。3 q; d# Z9 Q+ x& k# n
    6 r0 T  k: w9 D9 L+ w* E1 A9 g
    #include<stdio.h>
    3 n  L, r: }* m  D  Qint L_length(char []);( ~8 O" G! G8 u
    int main(){/ Z5 ~% M/ k9 p0 m. z
            void Union(char [],char [],char []);/ e. l' I% ~0 z  I
    $ e- j+ D8 E; \. R
            char a[10];
    ' @& U) s" G5 ^4 \" |        char b[10];
    / a$ Z; M) M' N# d; }& I- s) q. G        char c[20];9 y- W; Q4 X  r9 e# }
            gets(a);
    5 z- v! [: ^" r; X: B9 E- Z        printf("输入的集合A是\n");0 ^7 T9 ]0 o6 s. V
            puts(a);
    2 K( V, ~2 \! }* H : M% d  N% I6 `3 ]/ o  ]6 }9 w
            gets(b);$ R: ^" U' o* _, F& l" J
            printf("输入的集合B是\n");" |) B& Q; ~$ m5 p0 J0 A
            puts(b);! w0 }$ s9 U3 j+ l# o
    : e- h: [5 L6 J7 u/ }7 X% n  {
            Union( a, b, c);2 k' F, i( P+ O" ~6 q
            printf("last得到集合C是\n");" u  t- }, x5 Z  R* y& F; l
            puts(c);/ h3 `( T3 K( X% J2 @' F; j8 R
            return 0;
    / `5 |9 w2 T! ^, Y, \}- f7 D$ c% V- p  x! i. O

    % ]  w0 k- f7 x  N, dvoid Union(char a[],char b[],char c[])
    % c! K  {. W% R, n+ O! e{4 \. h* Z* o+ Q' X6 Y2 B# A0 w
            int flag=1,t=0,i,j,m,n;! u. X0 I  _' D9 I
            m=L_length(b);
    , i& D4 _" i/ P+ Q        n=L_length(a);
    # R& b5 B  H3 z* y3 A: d$ s; Q* M& _        for(j=0;j<n;j++)" C8 |; O. A5 [9 ^- h# F
            c[j]=a[j];
    % Z* V( q" V: k1 T# G! v  }        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    ) O4 y. \* |# I, b" c  U% l                {for(j=0;j<n;j++)
    4 r5 q- t/ V" J, W% I                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    ) ~4 ?$ {" S$ J  s3 A                        if(flag) {  c[n+t]=b[i];t++        ;}1 Q6 Q  X2 k8 q% i
                    }: O# w, l" h$ G3 ~# `% e
            c[n+t]='\0';
    2 w9 v# B" C) f0 J' b, D! u7 R
    / l1 u/ }2 O# K' k4 d$ c}
    - U$ W7 Y# q! k( C8 B2 v3 S5 N. Q1 B$ J. P; ?5 b, V* C, g
    int L_length(char a[])  Z1 o9 H1 ]& d, C5 n
    {
    + e& a/ P8 h% W2 {) d- E        int i,t=0;;
    9 m) m; }* H: Y& |' L: R  {" A' G        for(i=0; a[i]!='\0';i++  ). \$ ?& l1 S* }) S# g$ J2 m9 f
                            t++;
    8 K# i+ w/ v8 M8 p' E% c7 R+ S& U& A        return t;
    ( m  `- a8 Y3 L! U0 s0 }7 v}
    . P) l6 z3 u% o3 p3 @( C4 o( Q9 l: R- Q$ o! E
    回复

    使用道具 举报

    慢跑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 编辑
    8 N/ M: G+ X0 b: V; F, A" E" X, D1 T  s# X* F3 l0 ^
    li2.1yong用指针:
    , x% h" H- B# b$ ?2 p2 g1 M( ^
    + m3 _$ z* e! ?; R, S0 {5 S- P, ~! G#include "stdio.h"1 w# j( a5 Q7 `+ E! ^9 \
    #include "string.h"
    ) u% c2 F4 r3 c# T9 X4 d( \5 C( Rvoid Union(char *a,char *b,char *c)1 r7 K+ |$ e- L% O/ \1 f- r' M. d# D$ f4 @
    {
    6 z% U3 P- L5 V6 }9 o1 Mchar *p=a;
    9 J2 L+ \( K  j$ C  Wchar *q=b;, J, O8 l( Z2 T% J! j. m- X" G
    char *r=c;  i7 E, N% R5 ^! v
    while(*p) *r++=*p++;# Z, E- i7 E/ q
    p=a;4 D) g: `4 B1 t" G) I+ E. r* i
    for(  ;*q!=0 ; q++,p=a  )
    7 x0 \" @7 U  R* q1 x# \6 z8 m1 |( m{while(*p)
    0 t5 x( J' {: M1 D" U# fif(*q==*p){q++;p=a;}
    . i, [4 h/ G$ o, welse p++;
    & j; |. R3 R) C3 [*r=*q;- Q0 E6 q. Y3 _# L! J
    r++;
    6 R0 P6 I" V9 W}
    , z+ K3 ~9 Y* B*r=0;
    " G2 @- N8 Z0 H+ ?# Y" o
    ; ?4 i0 ^; M) p9 v; {5 j% f9 M}
    * e3 M" L* S( s2 D
    9 B8 Y" S2 s3 m. l. z; a7 cint main(){+ m% g( X$ x9 S% T
    % d" [/ w4 j! Z  l" r: L9 G& q2 o
    char a[10];: g; _' T$ e+ g) O' ?. T1 h! s, ?
    char b[10];3 G) A3 [3 H0 Q1 X0 q
    char c[20];0 I9 u  e$ {# Q8 ?6 J
    gets(a);
    9 T7 N. K' Z7 M7 f4 ~printf("输入的集合A是\n");2 I- E: ^7 I3 `& i
    puts(a);
    * I, K1 ~% G; }  H6 Y! p* O7 o9 k! A) T
    gets(b);) R( P+ j! s6 F8 g
    printf("输入的集合B是\n");
    ) D) [: Z, D# a# r: b+ ^5 pputs(b);6 _& u* ?) @& Y% [+ M
    6 c! f9 P3 X5 G5 L8 [) y; Q
    Union(a,b,c);
    * ~# s3 G  b" u- E5 G0 fprintf("last得到集合C是\n");
    $ S# ?0 [! K* d1 f8 u7 C9 D% t' ?puts(c);
    6 N. w  L7 D. g# G* ^1 Preturn 0;  F* t5 i- ~( t$ ]6 ]7 |+ ~9 H" G! ^2 h
    }
    7 j' |8 E) C" x* J2 e) x  [9 X7 K
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    ' E8 b+ \* ~2 t: s0 p( [' u#include<stdio.h>
    # I- c4 E' X. T) j* @% j4 [" A" ]2 o& R/ p, i& Y* j
      struct node& X! S# R* g" Y# x
    {0 ?$ _" J& V7 M$ }, T" B" B- r
            int data;( i' Q) I/ z+ ^& ~+ F" C1 n( G
            struct node *next;/ c2 @) S& k3 V7 K
    };7 X! y! i1 m% }/ H/ |
    //typedef struct node NODETYPE;6 \5 ?+ x$ v2 ^: U3 A* }' E$ T0 [
    void main()  {2 c! j/ e: G4 T; f, `% g2 L
    {: a1 Q( ^5 e0 M. \. M  W$ u# \
            //NODETYPE
    8 ]# f5 C1 i- W0 @) J% f        node a,b,c,*h,*p;$ F# _5 U- t0 i2 B& e, o- Z: D" G
            a.data=10;b.data=20;c.data=30;' |3 B+ q( s7 ?
            h=&a;: `7 S. g' C5 |. D4 f6 f
            a.next=&b;b.next=&c;c.next='\0';, |# o% E; y& B& D% v( y) c6 t& N
            p=h;
    ; B8 A% u% N$ J# o9 T: B        while(p)
    % E, X5 R& V2 J0 \        {
    / o! D5 n7 w3 q' m, V8 N                printf("%d  ",p->data);6 j3 f5 I; E! m# n% L6 b. h/ |
                    p=p->next;) ?9 P3 F4 n& O" Z
            }4 X! g: H# o/ }$ Z
            printf("\n");
    8 n% P5 i( F' X) A, p+ {% W6 \4 W. M: h0 O}3 e" A! X# W( Y( l* A
    # @6 f! F& v9 j2 c; b
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    & G5 R8 |" }& A2 G, S- D. ]2 D* _$ P7 Y#include<stdio.h>
    ' m' c7 t% N1 Y. F8 x4 v  N#include<stdlib.h>
    " H1 _7 v6 K/ ]5 |: c; dstruct slist( t7 J& n- u* E
    {
    . n! A* s% A/ C2 L; M8 u+ [0 z        int data;
    2 ?% u- _; H/ }+ A1 a$ k        struct slist *next;
    $ v" u" ~- w: ]) t3 Z  U' c}; / Y9 e: w# {0 p. J8 o* X  I! M* Q" N, Q, ~& N
    typedef struct slist SLIST;+ B# P9 f# H1 A! z: g5 ~, @
    SLIST *creat_slist1()) ^7 i! N6 U1 |& y, P! Y" M
    {, n: g, _+ N6 N
            int c;
    ( ~, K/ z: Q+ Q- M9 T: d7 r$ }        SLIST *h,*s,*r;9 }' `; e! U2 R1 u4 p5 P1 S3 o
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    0 {* U2 c7 f2 Y$ K& u        r=h;4 w6 y' d# r/ N3 Q
            scanf("%d",&c);
    * n' V7 C" Y1 h5 C        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    ( G! d$ {4 c1 u7 b8 Z1 K& H$ N        {+ n3 y! i$ z$ R6 o7 j
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点' m7 o% w4 M* o. H! t7 P
                    s->data=c;5 d$ H4 k* J; [  ]
                    r->next=s;
    3 |+ N& p! R) E* ~3 j" \                r=s;
    % I; a4 B' R7 f4 K/ _                scanf("%d",&c);& @1 z! U! P. Q4 c5 L
             
    2 s& x( e, V) T6 n        }' ~- e4 E8 h. w" |5 ^0 S3 g% E
            r->next ='\0';
    # K7 C1 l) I  o( M. _& S* N        return h;
    " V) A. U2 c. c3 t. `6 v  `# w}
    ' b0 `& i# |; W2 g! a1 ]- m+ Q) K* D2 b; ~+ k6 |
    /*6 o- X5 d2 I+ _
    printf_list(&head)
    / _# @2 s* G& o/ Y{        SLIST *h,*s,*r;" }! a% s# e# Q, R
            int c;
    , ]3 b5 z# o8 Y0 s0 O: [        h=(SLIST *)malloc (sizeof(SLIST) );5 ~" l5 \8 }. T
            r=h;
    . r' q/ _, y9 n% _6 Y+ R7 F6 T        s->data=c;) o+ D+ Y- e0 N2 Y+ x/ W2 c
            //scanf("%d",&c);
    9 w6 C. v/ u1 ^: d) i        while (c!=-1). K: n8 ~( r" @' j) e
            {
    3 y1 f% S8 Q  N                printf("%d",c);
    8 ^! e2 p$ d4 C5 j                s=(SLIST *)malloc(sizeof(SLIST) );9 [+ ]3 K/ l* _* _$ T7 b0 z
                    s->data=c;, n; p0 F2 l5 ]& M  e
                    r->next=s;
    - w- w( ?0 d" ~4 G" D9 G                r=s;( M! b9 G% `" `( R
                   
    0 k; z, I1 d& @         
    / `6 F( U( O' f, o! \        }& u( @" d# I/ O# S" }1 ?
            r->next ='\0';
    + z$ l  P2 L& J0 _, ~) B9 K! O        return h;
    % p' Q3 H; ?5 B5 R; z7 Y, y}2 J2 u2 o% ]. p  e( U
    */" }2 m5 f) {+ f% n
    void main()
    0 b: j4 Q% q$ E& A* i{ SLIST *head;
    - ~9 E4 p! i  K4 I) E1 C1 U
    $ Y6 q& ]2 d7 Q1 M2 V; [% p4 lhead=creat_slist1();                //调用链表建立函数,得到头结点地址$ K# m: T1 @. ?) b6 J( Z% Z5 g
    printf_list(head)
    1 M; B5 o( E% V" p* N, h}
      H/ P# z( q/ m6 p
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    " f& U0 G4 x9 n  _  V  C
    0 m# L: D' d) G- R+ J#include<stdio.h>; z. g2 ^4 u8 Y0 r1 G
    #include<stdlib.h>
    1 c  U) I! E6 `+ o4 b
    0 V! y  N# e* S2 i struct slist0 [4 x5 Z' Z- p& p: Q
      {
    " f- Y% F; u5 S  a" t  int data;+ P& J( T$ n/ B2 E- A; c
      struct slist *next;" C8 T' L4 o: u/ v% \- W1 l
      };7 x* r2 ~) f# B
      typedef struct slist SLIST;' B5 D9 c, t8 n: H  D
    * y) e" |0 x" t5 U5 |
    SLIST *creat_slist1()! U- }" a  s4 E% L4 W4 `
      {
    $ n; e* l7 Z* `  m% t( _  int c;
    / u7 Q" L# U8 @/ O" k/ B  SLIST *h,*s,*r;
    $ P- Q6 t: Q, H  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    - A$ ~  {/ P+ p* U) Z) ?5 z0 j& F' u" [r=h;
    7 t1 s+ G+ D" z4 G. O" p, z9 C  scanf("%d",&c);) p$ v# }, `$ _6 r
      while (c!=-1) //当输入的c为-1时,代表输入结束6 e" _; s2 S* m  K# |1 v
    {
    ) V$ g+ [! q/ W" t3 z8 zs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点3 n* \3 O- e- O/ B' b* e
    s->data=c;
    3 N# D0 o) H$ H( g7 ^  r->next=s;
    , J8 X; f" l! n/ X9 p# X8 K% \  r=s;
    . b) p/ e" r' r5 l* e  scanf("%d",&c);, c$ p9 T+ n9 `# |- s  D5 e
    / j1 b) v' a( }2 t
    }+ ^( [( r  i3 J. p2 p+ W, v1 K  a: w
      r->next ='\0';- H' a5 H/ J1 d1 [, Y% }
      return h;+ \- R* {/ o5 t: A( F
      }
    5 ?0 N9 f* h8 j2 q1 o" ?
    4 A7 S  Q! S, a, b$ G/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    : y- w! `4 o: Z& X, M+ y6 kint printf_list(SLIST *h)1 \3 n) K& G4 p% k% I' `, h# _
      {
    " R8 `% j# F! p, _! n  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    ! X& l$ f6 X5 k5 n8 ^7 S while (h->next!=0 )) m1 N0 U  Y$ T- v
      {: l" P# _) v8 a* {( U6 ^- o
      printf("%d\n",h->next->data );
    4 r. x& G& x  r  h=h->next ;2 D( U$ o/ @  y6 B- x
      }
    3 k0 }0 @6 E# g( t  return 1;  ?; [  A* J+ ?
      }
    0 P, q: t8 d$ R# J  /**/
    7 S7 k+ S1 ?6 i6 N; m3 k, v void main()0 s: c. i5 ~$ Q# j
      { SLIST *head;# W) ~2 L2 ?/ F& x+ ?. @! [

    ) Z) n2 Y$ Y& m/ d. ?head=creat_slist1(); //调用链表建立函数,得到头结点地址
    : @+ H: R! V7 v8 m9 z% Jprintf_list(head);/ c2 k0 p: @, y  F6 T* k4 Y; T
      }4 b( \1 j. ^' o% @

    1 S1 M5 F: @; m, B4 D" ?' K3 _7 x& V3 Q; Z
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-8-18 17:10 , Processed in 1.102160 second(s), 83 queries .

    回顶部