QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2440|回复: 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 编辑 ( ^; w& J. U  E$ u6 u2 @$ z
    3 s0 A; z/ ?3 C' k6 ^
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    " g4 J% O* C* g刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    % ^* J4 ^) `- f% s6 b8 t: 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集合。  Y- ~) K( c. Z- H" p
    这个代码是用数组的、算是比较简单的。, Y' `! l- _5 V, {) W: [' F

    ; _, g8 z# P( @8 i& b6 P" w& V1 g#include<stdio.h>
    ! D9 p5 J2 y4 M! h8 ?int L_length(char []);  ]. W" F/ \5 U
    int main(){3 P0 a7 V4 }" t, k' E/ z1 d' I
            void Union(char [],char [],char []);
    4 B% G0 {- J% @4 `7 N- Q% I
    + e4 g+ {) O/ _8 D, O- F        char a[10];
    9 e( Y, d1 Y1 G, X2 _' ]        char b[10];% `, F4 ^( P4 _" ]6 e
            char c[20];
      |6 n: v& i3 p+ y9 T( T        gets(a);; q% H7 A! q/ `$ v- W! u5 [5 F
            printf("输入的集合A是\n");
    4 Y: K7 h  e, V% w5 b        puts(a);
    1 q; C% m4 x6 m 1 K9 r! l( Y1 D4 ~/ f- G
            gets(b);
    * C, P2 U# U2 D1 I  C" o( H& I        printf("输入的集合B是\n");% s0 a6 f2 \" m( D0 w; z
            puts(b);
    $ X+ a. a  _. u/ F( r" K0 }& |" W) ^/ S2 M0 U
            Union( a, b, c);
    ' o. L; P" H3 `6 `0 G        printf("last得到集合C是\n");
    3 @+ a$ K. }( k: F2 Q& X; O; Y2 V        puts(c);+ k4 T. U, ~8 ^5 U7 R( F$ G6 r
            return 0;
    6 q3 g2 g  i7 P; l) d}
    + S# y# {% b/ A  @$ r4 J9 w, G' e
    void Union(char a[],char b[],char c[])1 C, G8 m5 k- h" g5 w% L: p
    {' W' k8 ~4 {( J$ n+ t+ R, K
            int flag=1,t=0,i,j,m,n;0 t. j6 a+ }: M" `9 J# a* r- Y( w
            m=L_length(b);
    ' l% U- T  t' o0 i& j        n=L_length(a);' x1 K: f- @' c6 h
            for(j=0;j<n;j++): @9 C$ [' u+ p- M
            c[j]=a[j];' R# E  [, P( P+ E: J, n( L% K
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;8 w, E6 ^: d# t  e! w7 M+ s
                    {for(j=0;j<n;j++)# h! Y% l* h8 w' ~, |# _6 f
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    , i) _! ~  O1 a' J. P/ w                        if(flag) {  c[n+t]=b[i];t++        ;}
    2 p. w" e. Q# e2 Z3 S7 t                }
    8 y9 E, R0 q+ C2 ^5 ^        c[n+t]='\0';1 X# s4 _5 i8 t' h

    ( A9 S: W, G* z+ E# w" \7 ]; q}
    ; X$ _( b: X5 G$ E
    . H# j; Z; H; _* X* {int L_length(char a[])0 N9 I5 J$ f2 r& @4 M- h
    {
    + E, W% H; ]- Z" B        int i,t=0;;1 |1 q# G9 `- N' K4 U
            for(i=0; a[i]!='\0';i++  )
    9 }$ v  K* E+ p5 S( s; j6 H* q                        t++;
    + L' d! h* R, i9 ]5 X9 M# c7 c        return t;
    ( r+ T! r, H, v, E: D. ], d}
    / i0 K7 l% d- p, i# U0 O+ u
    7 Z" A  G: Z8 y8 T- Q  w2 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 编辑 0 b  h3 X. K: N$ ^8 R; k! \

    ) G& F9 I# l, h  G6 ]# ~! x! h+ I7 _6 Fli2.1yong用指针:
    ' K7 X7 ?' N/ J; E! D/ t7 N( A
    ( N/ j  r4 i+ c) d5 d  R0 u0 c#include "stdio.h"
    4 r  S) Z6 l* w1 h#include "string.h"6 H( n) a; t* U: |3 g4 @& }
    void Union(char *a,char *b,char *c)& {* R) ?5 l+ U7 I2 U
    {8 Q) h* b/ C, F: s. Y- Q$ [
    char *p=a;
    9 m  [# n$ R0 |" v8 Dchar *q=b;
    * z  N, R) @0 v- t$ Jchar *r=c;6 m7 j; ^: ?1 }; S& y4 A0 U
    while(*p) *r++=*p++;
    * h# }, a7 R8 Y" L& z* A4 ep=a;& J, J2 p( a8 K9 ~+ g
    for(  ;*q!=0 ; q++,p=a  )
    $ k# f' t8 W6 w1 N{while(*p)+ k) Y* I' Z! g+ `9 F) W! P
    if(*q==*p){q++;p=a;}
    0 T# F+ @  l' ~7 n. u& J/ ?2 uelse p++;
    - w8 z: G! D1 ^# N*r=*q;& [  B9 T/ B' R( j" q+ P0 h% I
    r++;
    7 r2 Y' |) G3 o* O6 _}
    / J* l" i/ [0 g- z*r=0;
    # U* b9 S) v1 h5 S6 E7 [4 X1 M) S" X7 B& |0 J# N) V" a. ?# C8 e
    }
    ; Q: n& R' F& ^. ]9 d
    2 J9 o4 t8 t6 p8 nint main(){
    3 C, @( P/ w+ S+ p! H2 X
    & a! B1 A) c9 }% m8 I( bchar a[10];7 g/ A& R6 [6 ?) j! P1 j6 V
    char b[10];
    3 k; x# u  a2 V% s% Schar c[20];( i/ X3 e+ G  T. X+ N" y, r" B# ]! }
    gets(a);* c, E. X' b, M' r% c! F$ O5 a/ `
    printf("输入的集合A是\n");) F7 I( I& H1 {5 g+ g0 C
    puts(a);6 s% E- q. g9 J  x/ t* O
    : V2 c' d6 i% j9 F1 T
    gets(b);4 T% @; {0 Y4 W5 H% u* a* h% u6 \
    printf("输入的集合B是\n");
    ; O( r( c9 z% z" c  ^) k$ hputs(b);* U4 p" l- G, a) l5 D( [
    ! b0 O+ t+ a6 a( J7 V
    Union(a,b,c);. z. F" V' Z* \/ B
    printf("last得到集合C是\n");
      B2 u$ s; M4 R* q4 ?" bputs(c);
    - C# G2 N( w; g& G! F5 Ereturn 0;
    2 H9 I1 Y2 s6 Q6 @& d/ x2 K}
    $ o' m: h+ x+ O( U; [
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:/ v1 Z* F& J& D+ ]! L* Y5 s) Y. o
    #include<stdio.h>: k. S- T1 x1 W  o

    : P  B* Z- Q0 O% G2 C  struct node
    : v" L/ r" a: N, O' ]{( y4 L! w0 Q# y% G4 ^, \: b
            int data;
    - {( J% V& m/ q4 e        struct node *next;) n6 {* F2 U. i4 t
    };
    4 {& X1 ]5 p# d/ E. ~/ R//typedef struct node NODETYPE;
    - O% C# d! l6 `/ s5 \void main(). y" i/ ?' N1 g1 H& y% _2 K
    {+ k6 B- T$ j$ P2 K+ s9 t& N
            //NODETYPE
    , I" a* S6 T, {- q# V, i) t        node a,b,c,*h,*p;
    + u3 B$ N9 n4 @  G        a.data=10;b.data=20;c.data=30;, |4 D& C9 Q& i
            h=&a;- m, h. U( _2 _
            a.next=&b;b.next=&c;c.next='\0';
    ! N5 |6 Y$ z4 F3 U# ~+ F+ I4 w' y        p=h;
    9 ]/ j2 V. n8 h$ S        while(p)
    - V4 y/ Q; r# W        {& C6 s3 a0 P) J4 W
                    printf("%d  ",p->data);. z& }$ @* Q. L6 M8 E
                    p=p->next;
    + d6 \* n6 n$ V8 `! ?        }
    ; o: ], s, u, J4 c8 ^" R        printf("\n");( A; H3 {! h* L* _) I3 I6 v
    }
    : H5 l1 I; J+ a# V$ Z4 n1 a9 W$ B
    ( k9 P  Q5 O: N' R  p  i" s8 j# |这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    # H/ c5 K# _3 N* |#include<stdio.h>$ k6 F' t  }3 o$ f
    #include<stdlib.h>
    . L) n8 O5 m2 H3 Z: s8 O' C! ^5 sstruct slist
      t2 V+ a: {) c+ }{. M0 m' K9 ^5 r4 c' {
            int data;
    ' C3 ]% u$ N* K        struct slist *next;
    0 o& f3 o" [4 V* O; W4 A5 x5 ?# r}; - F0 s" g7 J( F. }3 k
    typedef struct slist SLIST;& w. r8 r6 E0 E8 c
    SLIST *creat_slist1()7 c) Q" `0 }3 l
    {
    & m6 g* \1 U( y+ Y- _  ~) A) q        int c;
    ; w2 A/ x# _& G' r. w5 l        SLIST *h,*s,*r;! C( S) p2 F& W6 S1 i3 k1 j' V
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点2 o6 R- _# T7 l7 M6 C
            r=h;
    # L* W0 \5 n7 t# [$ U        scanf("%d",&c);
    2 A9 E# E$ h. z( R$ W0 C3 G        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    + c$ i, Z1 s# S5 h2 C0 z6 K) B        {3 u7 }( `* R0 ^* Y6 H& s* R2 y7 X
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点0 u* h2 p3 w! T( ?( e
                    s->data=c;
    ( g  p1 ?( R2 A, v0 X                r->next=s;9 L" e  Q8 I  D6 N0 F9 A
                    r=s;4 m: i2 I* P6 E$ J
                    scanf("%d",&c);2 s# p$ H+ o' J# \+ a
             1 n! T8 B7 z" t" F! q
            }: i4 c$ n! z8 }4 R- _+ e* P
            r->next ='\0';
    * ~) n( N" o. v        return h;; ?. Q& p- l6 W+ Y3 y2 I/ i4 m
    }" h$ R* A+ p0 t/ `3 q! V
    " B0 t4 u4 D7 x' h9 l( o# P+ J+ {
    /*1 r! e) \2 F- _3 y# @' W
    printf_list(&head)
    9 t  O& F) E" b1 R2 B{        SLIST *h,*s,*r;* L: p! n5 c  u& @
            int c;
    7 c6 E5 E# U. l        h=(SLIST *)malloc (sizeof(SLIST) );
    5 A( n0 K' d9 S" u. R3 R        r=h;/ L6 {6 F6 o8 h' H: y* [1 k
            s->data=c;" q+ R; m$ N! q3 A8 u' W
            //scanf("%d",&c);5 f7 Z. |5 D0 p" H: q  ?" ?
            while (c!=-1)
    : n! r: v9 M* o2 F4 L        {' o) J7 |+ E& ~. G: P0 q; j( H- E1 N
                    printf("%d",c);4 d# H' u1 z) [. M( k# U
                    s=(SLIST *)malloc(sizeof(SLIST) );
    ' m/ z( p2 x( ^9 ^                s->data=c;* |; V3 D5 ~4 w+ X
                    r->next=s;5 j/ H/ }" w* Y/ @- t1 n# n
                    r=s;
    4 j, P9 A" K; ~7 W( S                , j/ ]5 L3 u. }$ K5 s1 \
             
    4 m3 N5 C1 z) _2 y        }0 {( E+ e% f. l( _( k" u
            r->next ='\0';
    / T4 ^9 I  [$ K' {        return h;
    1 g+ k0 x$ o; Q. s5 q. D}
    " H8 T! s2 D$ y# |  ~4 T; Z*/  z5 D. a$ U9 O8 `; U) R/ h3 ?
    void main()
    ( h7 [+ l6 w: i{ SLIST *head;( ~0 Y" ]9 s' V8 r7 Q' A" L, u
    + j" X- `1 e. A+ s3 I  H
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    & \, \3 A1 n0 n0 z3 Sprintf_list(head)" `! g) ^8 p1 j5 j/ A
    }
    ) I0 b1 C2 G5 X6 r$ V) v. a
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。4 a* t: `% s9 y0 G

    / D/ |" E7 u4 a9 C8 v, _- }#include<stdio.h>
    ; G! n, G( j8 O6 ?# x. Y #include<stdlib.h>
      _) C- J2 M5 r$ R) g
    * m  K. Z% ~5 Z1 L1 j% [ struct slist
    ) x% ^4 O" V" j9 k  {% e4 r: X' X! |
      int data;
    & _3 i( T0 x& b: e6 Y  struct slist *next;
    + B' q3 G" H1 J3 @  }  };1 b2 Q$ A$ }. M; x5 Z9 a3 I
      typedef struct slist SLIST;) `( \( \" S; A7 o% D9 W* L9 q

    ! V; U( z; m+ Y. V SLIST *creat_slist1()
    + C! e: S) ], T  \  {
    2 Y6 v" h+ k) g9 ?) g" y  int c;
    8 b8 |! r( m: S# m4 x  SLIST *h,*s,*r;
    9 [6 ~/ x0 O4 `, J0 N  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    + V% k0 D0 o" h1 F; y; Y7 C6 |r=h;
    + r$ C3 t$ m# K! u- p& Y. i  scanf("%d",&c);
    ' \5 Z* s4 f8 ]0 w' M. R0 n  while (c!=-1) //当输入的c为-1时,代表输入结束1 x9 u( s8 D5 Z, @2 N; a
    {
    ! p: m% _5 X, ]* X& [6 m7 ^s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    6 |4 k; L9 I7 w% h8 r1 F3 Q) X. o! cs->data=c;$ F3 e3 L9 ?$ a& [. H6 B& o6 y
      r->next=s;
    / i, J$ ~9 T: d  r=s;
    ( n8 Q/ ~* M5 e9 d  scanf("%d",&c);
      P+ f4 |  u+ e 3 m- L* U/ \% C0 V, n
    }. H! ?' N' t* e) t; j3 S& ]% g
      r->next ='\0';
    5 k9 f5 N7 |4 E: S  return h;
    - y9 q& U, w: t4 U  }9 |  G+ i: e8 M! N+ p5 \6 J
    : \1 L5 b5 j4 G5 q% v% A# w. o
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    - v, d/ ]( p. _7 v1 J5 vint printf_list(SLIST *h)
    1 T- T+ y+ I! H- F. R  {
    * M, [7 z! E( P: `  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    1 d5 _/ ?3 X/ r8 Y$ t- S while (h->next!=0 )
    ; a' T2 Y( x7 j& V  {4 f3 \* d: |' L
      printf("%d\n",h->next->data );
    / Z# P6 {( r7 S' c- W* H9 C- }  h=h->next ;
    4 X  M' y( r, h% X8 `/ n8 W. a  }
    4 `. S) k' X7 O7 t( G9 k  return 1;
    5 {  P4 b! W% m2 m  }
    . y* r/ G3 m4 o  /**/3 W; h& z; E8 _# @5 e! L
    void main()
    " l, w* S) c4 X' w! @  { SLIST *head;
    ! k1 @: s& \1 [( _; U4 l " f" c' A9 u: O7 z% s. R
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    6 \7 W. B0 S8 Q; bprintf_list(head);( C0 X5 V& i0 R) F) s
      }" E( y$ r( q. B

    0 B. c) \, E' _3 c! G" q! Y% c( ^3 c/ U/ T6 O$ v
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-3 06:06 , Processed in 0.429306 second(s), 80 queries .

    回顶部