QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2410|回复: 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 编辑
    ; o9 J0 z4 t6 R; @. z/ I4 ]
    8 f$ n! u3 b9 V+ X# ^6 o/ v计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    & `) F7 b3 _2 b: e6 G! ^- C刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    ( }4 d5 ^9 k4 `) W" d! [
    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集合。1 r$ }2 P% C- g' F
    这个代码是用数组的、算是比较简单的。/ }) w- q  d" J  i' v$ P

    $ c" m+ Y. A8 {. x3 B#include<stdio.h>& u2 d" f0 b& z
    int L_length(char []);
    8 {0 t5 H$ G. I5 E8 ?int main(){, R0 O( B9 B/ B9 B
            void Union(char [],char [],char []);  N& a$ @5 d/ A8 Y& C" ?
    ' K1 ^' c9 d3 v9 j5 }/ t' ]
            char a[10];
    ' r+ T* f5 R( i9 E4 P: e! a        char b[10];4 ?- c! c* O7 x) ?: d' S1 N
            char c[20];6 ]$ [' P* n+ _% _
            gets(a);
    7 I2 }: g" |8 ]0 m  G- w* Z        printf("输入的集合A是\n");
    ' N2 s2 ]% a' v' m1 \        puts(a);
    4 |. A. G7 E, g2 o% w: `# e' R
    - @  \/ z* o9 f( p2 o( A" s- w        gets(b);5 m# c, I" Z& G/ K
            printf("输入的集合B是\n");
    7 }- D' F! L- r) b! M8 e        puts(b);+ C$ j) p7 t- f

      d5 p; l1 B4 R9 Z1 T7 x        Union( a, b, c);
    0 G" l! \# S! `7 O+ t        printf("last得到集合C是\n");
    % k9 c0 U7 M* j* d0 y1 v$ }" {) B        puts(c);. Q2 |1 b/ L- Q5 n" o- D  H
            return 0;: p: m! i5 [( C# w; M
    }
      F6 E. T# e  x) w' }9 D
    # }+ ]' R. l' X- W% l, I" vvoid Union(char a[],char b[],char c[])) p* G( ^( t! e& q. G) U' @
    {0 v7 e5 ]) p; L* i) X
            int flag=1,t=0,i,j,m,n;, h; B+ M9 f6 z- j% W  A
            m=L_length(b);
    " }* {- O' I0 K9 P% H. x  U6 p        n=L_length(a);
      [5 V, ?; e6 }) B) R$ c        for(j=0;j<n;j++)
    ' v; l) K9 u+ I8 m1 f        c[j]=a[j];% a2 C1 ?& B( p, M7 ?6 y. B
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;: n, v4 \. ]. n* q5 Q  v8 I4 |
                    {for(j=0;j<n;j++)
    % [; R* @' E. U                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    2 R* ]5 m3 A* ]# ^  m' q                        if(flag) {  c[n+t]=b[i];t++        ;}/ v* @7 a  X* m/ N* b  d. m) _* ~
                    }7 y# M# i) n* T: L* |
            c[n+t]='\0';5 g( `4 T+ U' B
    & P; O% `; m4 E
    }
    ! e0 c# _) z( O+ {5 x% S5 w5 ]
    3 M. r$ a7 ]8 j6 [- Q) fint L_length(char a[])
    / N! B0 D4 U7 N) a6 x{; T4 R5 A; b- D) F( v0 o# x9 ]
            int i,t=0;;5 h8 A: M# J5 h2 Y. y  f0 ]
            for(i=0; a[i]!='\0';i++  )
    ! g6 x+ b' b9 R0 r) ^9 U8 {                        t++;
    ' J' Q& s0 T1 n, I        return t;* n, D$ i. s' F, E5 L' ?
    } " T" T& v. D3 D9 h: a  _/ o

    ; O, G$ X% l# X( x
    回复

    使用道具 举报

    慢跑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 编辑 7 D+ G! o, k: ~# v5 B. C. L
    7 W- o+ X0 P" \( z' k. l
    li2.1yong用指针:+ r+ W' |5 [+ P

      U. s$ F( k% _- Q# i2 h. U" C8 i1 e#include "stdio.h"
    . B: f% ?5 l8 T: W#include "string.h"4 O- S8 s# j) _3 w$ l8 P) B8 R7 T
    void Union(char *a,char *b,char *c)
    9 L( Z( o+ b: M: I0 H) [{
    ; h" P: A9 p, x$ q: @! T( `2 gchar *p=a;
    / k# o7 G- M7 x$ d9 L/ c& v/ o) |- P. |char *q=b;
    $ p0 @# E# p& ~& `) Bchar *r=c;
    " W+ b( Q& Y. ?( q2 E  ^. Dwhile(*p) *r++=*p++;
    9 r0 C  N2 o3 Q- H8 R8 O6 ap=a;
    0 U9 I* d* Z9 j- z6 z) n- Pfor(  ;*q!=0 ; q++,p=a  )# ^& ]# T( |! X0 D
    {while(*p)
    * B8 d, R8 o. ?0 c1 Xif(*q==*p){q++;p=a;}
    , ^3 `$ m! _& R+ M* C% ^' @else p++;; m; z, p8 a( X/ E& |
    *r=*q;
    # l+ l$ O. r; e) dr++;6 m8 B2 c8 P1 W2 u9 B& t
    }; }. d) J6 e, ~3 M! [
    *r=0;. T: ]3 N" N! ~" I# \
    * \1 i8 ^) J  f7 r2 @7 D8 H
    }& g! Z. ?$ \, _- U! r

    3 S3 G. p) o. M/ C! L" M- Nint main(){8 B8 B5 Y; p6 Q
    7 E  Y9 W( N2 W" k6 q
    char a[10];: V" o8 i) `4 E: q6 c; ?
    char b[10];
    " @& i% I# Z' C+ E' ?char c[20];
    , v  H- O' @. Wgets(a);: r: }7 y) X! `
    printf("输入的集合A是\n");
    " o( B2 P& t4 a! l% `/ _. Y( Y: Iputs(a);
    + t2 I' R; y8 ]8 h+ B$ j' e- t) o( n7 ^1 h* l2 q& D' h1 J$ W
    gets(b);
    7 Y& Y$ h1 U4 |' K9 U8 sprintf("输入的集合B是\n");
    - f  k& e8 J4 |+ @2 N+ Eputs(b);3 k- [" [) z, c$ ]5 p
    $ k! d/ `# a" S7 }$ b% z# w1 Y
    Union(a,b,c);
    ' d3 N  B; f0 |3 d6 h; n) o( Y# qprintf("last得到集合C是\n");5 A/ Z& T: d3 K
    puts(c);  y/ ]& i3 R* x0 p5 s4 \2 u
    return 0;
    9 l3 Z( V4 g& I. n3 w}
    & i  L; K& z  o( _. `
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:# q: [* f% Z* O5 O9 {4 i4 D
    #include<stdio.h>
    % W3 P% N" I. j$ o" s. E
    ! O) w2 s- g( e6 a& N  struct node
    , A  d0 w. e2 g  k) k{
    9 g9 P: T, P# r        int data;
      J' x" z. @3 K2 R& i! {        struct node *next;9 n' h, T' O8 y; j
    };: p( a+ }6 h1 z  O4 w3 D9 F
    //typedef struct node NODETYPE;4 p# K) p+ }( W3 o/ S4 d' J- _1 f7 D
    void main()
    9 |" @1 e  N& ]+ E9 M5 u{2 m" f' h& {! y! c! O+ I7 L
            //NODETYPE& N6 u2 ~0 X9 Q' x
            node a,b,c,*h,*p;% ?: H1 j' j) Y9 p+ Z( _2 n
            a.data=10;b.data=20;c.data=30;7 P7 u7 z  Z7 Q' v: b# S. ?
            h=&a;( x5 C# {: P/ v9 s! F
            a.next=&b;b.next=&c;c.next='\0';
    ; h6 K0 S( _+ O6 r        p=h;
    / g$ o: p8 q' j0 G$ A        while(p)
    ) l% m* C5 d9 a/ r        {: t4 V( N4 O3 @0 m  a
                    printf("%d  ",p->data);! a9 x& C# Y% I) R- L+ G! C: o
                    p=p->next;
    , k8 p( U5 R6 j        }
    & ^, m4 O: l8 h& ~+ ~6 m2 q  W        printf("\n");# D2 C- H2 ]" h8 x. J
    }
    : f/ g3 I# ]* Q7 Q! i
    & h; X9 i3 G- j5 ~( o6 n这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:7 p1 b9 t' N6 [9 b
    #include<stdio.h>1 a8 H9 O3 e: z# c" R
    #include<stdlib.h>( S; K+ t7 n: i+ \& B$ `; X; \+ o
    struct slist
    / p, ?& _' q4 u9 q! _{
    ( K& x& }: Z. v2 }& m( ]! p1 L        int data;
    6 w) Y* y0 Z  W% ?0 e% {& R; @! c        struct slist *next;. N# m& q/ z- c& L/ }6 G8 r
    }; ) |( j% Y) k! c( D! f
    typedef struct slist SLIST;
    , W% Y2 Z/ j  L+ I0 d5 fSLIST *creat_slist1()
    ) N0 j" i3 X! J- f8 l# ]' ~7 b9 p{
    0 }3 z# H. i2 O0 n0 j# Z2 W        int c;
    4 _; F  ^5 Z* s6 F  B        SLIST *h,*s,*r;
    4 ~3 ^8 e7 |6 I/ b5 R* n        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点  U+ N8 v$ p' Q+ A8 L7 O5 A* Z
            r=h;
    ! [/ w* k) g' f- S8 Z& n        scanf("%d",&c);; S; y$ G+ U- e  k: K& j
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    5 s$ H/ _! F5 m: F) i1 W2 N        {7 P4 S# q/ [9 f- g
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点, M& x7 R* _" o( ~8 {
                    s->data=c;
    5 v4 f# h  T+ B7 P4 _: f                r->next=s;8 S) T# H6 T$ t5 w6 `- u
                    r=s;- n" G% P  C6 C5 @
                    scanf("%d",&c);; O1 u" p4 R7 y/ g# E
             
    . v6 \# x& J% ~# ^7 f# J        }
    / c2 D$ ~) l* M5 }/ Y' t        r->next ='\0';
    . b$ e+ _. u; d: y# d        return h;( y) V$ ]% G- R3 t4 }# [
    }' L( H/ f  v: H8 D

    * w0 F7 @9 h* x) c& A; g; D/*  s! D; c4 {; a- f
    printf_list(&head)
    $ Z; j2 ?2 q% R' {3 X: n0 e2 `{        SLIST *h,*s,*r;
    1 M! f! Z) C7 A4 s- }6 K        int c;- k/ ]2 w* r1 l- o6 N  |
            h=(SLIST *)malloc (sizeof(SLIST) );+ X# m( n' l9 S
            r=h;
    " R- ^4 ^3 ~3 J6 e2 A& K        s->data=c;
    9 y* s; o) y2 V4 \6 Z        //scanf("%d",&c);
    / E# l+ ]/ a9 r, A        while (c!=-1)
    & a9 G8 ?/ \  h- L6 p% ]7 v, G9 Y6 O/ J4 a! k        {
    5 J! z& Q( W, ~3 T- z% Y                printf("%d",c);
    * S! H1 V+ R9 z8 H                s=(SLIST *)malloc(sizeof(SLIST) );
    1 |: F. b; y, L8 @% V" ^' L+ d                s->data=c;
    $ d: i1 j+ D' a$ T- h                r->next=s;
    * b* F( J4 @. Q! e9 I( o: L3 j                r=s;: X( h. Q# \0 k1 J0 E' O1 T+ F
                   
    % N3 @0 V- w: L  S: N         
    5 ?; ?; \9 j$ k, |        }! |) P% F) a# F: b7 G, Y0 Q  y( e" o
            r->next ='\0';  J: {3 \1 b  s( `
            return h;
    9 K+ W; J/ p9 x9 ~% T}; k( L9 o/ |8 Q* u4 o' i" r6 }
    */
    2 @6 p8 }5 a/ J: U  n( C9 j3 Rvoid main()
    - M& L6 o( r2 X/ t7 G; n{ SLIST *head;
    * t2 [3 R, J0 }% {, A2 J1 T# J8 [/ t
    # X7 E9 Q& u5 F, _) b0 Ihead=creat_slist1();                //调用链表建立函数,得到头结点地址/ Y5 P) \* `8 w9 ~3 c; @7 Y
    printf_list(head)! K& {- L4 g8 Z+ _. ^' U$ H7 G
    }
      Q1 T; s* v5 Y1 k& I/ m
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    8 s1 i2 A2 I! T6 M. H; o  A+ M  N! W4 }1 G. I$ `
    #include<stdio.h>
    - U  O0 |* m& g7 Q+ v( c #include<stdlib.h>% O# n3 D/ k7 @$ v

    2 S6 ^; c# P; I& b3 b# [ struct slist" S7 i. S1 k5 {* e
      {8 d# K" u+ e0 \9 F, K6 V* M) N
      int data;( {" ^" K  i0 u1 F
      struct slist *next;4 }/ W; J( p9 A0 i5 S
      };3 @4 L/ x2 B4 P9 D
      typedef struct slist SLIST;0 \# p6 ~1 U1 m. G
    ( V9 c7 o% ~0 r
    SLIST *creat_slist1()
    + J8 X2 I5 T. R- N7 v. ?$ O  {
    ) G; m8 w! V7 p6 z. w, d4 @  |  int c;
    2 @9 a% B! q. f0 I  SLIST *h,*s,*r;
    , M, `6 C3 z: s  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    0 a7 t) f& i# E% I0 Dr=h;
    & c) {! T# C( r# X: a& b% \  scanf("%d",&c);
    8 l/ Z8 M3 E2 T# |  while (c!=-1) //当输入的c为-1时,代表输入结束
    & C% J  @  f; d& ]& M{
    ! b: |" x8 c1 b" l7 R- `8 ~8 us=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
      Q4 N! Z% O: J9 d% `s->data=c;
    / e0 b0 U5 V+ \5 h  r->next=s;
    ( T/ Y' v4 @; }1 W+ ]9 P" c  r=s;
    1 n: _, N' z. `! L9 r9 i+ e, _  scanf("%d",&c);
    7 w: j% d/ t7 Z3 n3 w   R3 m7 t# m) C( {+ i
    }
    ' L! W3 ^! H8 O1 z1 y  r->next ='\0';& d+ h$ c4 t# A0 q
      return h;
    * X- k2 w( `4 T# N( D" y; K1 j7 g  }
    ' \1 |3 |8 a: I$ ?3 @8 P3 R
    1 W# a0 F* P- w& _' z1 `- Z8 g/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?4 q. m6 ~+ V# W" G2 m
    int printf_list(SLIST *h). {! E" e4 ?2 I$ Z  D+ I- L
      {
    # x7 L2 C4 c. B" z9 z  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    - c* Z) W0 r3 ^/ B! [, N while (h->next!=0 ), h! o) z6 }. C8 P- A
      {
    ; W& s1 W' v  r' v. \  printf("%d\n",h->next->data );) I5 f$ X# h( t
      h=h->next ;
    ; T9 W% V2 f( v7 ?  }4 w# {  h5 H% ]; s/ s3 G
      return 1;
    7 N) v( h5 r2 n  }8 [7 [4 c- J" O
      /**/5 d" J; q3 w" c: H; ~5 X3 M7 `- O. l  [
    void main()' b* d$ S+ N7 t
      { SLIST *head;
    ) D+ h5 w: n- j" W
    ) \& R( c7 K$ W# Q0 Q0 t) l9 shead=creat_slist1(); //调用链表建立函数,得到头结点地址
    , L- R3 d  H6 V6 Eprintf_list(head);
    / S* t% q1 u& ~/ P( I$ S* y  }+ h; H8 Y+ e( @8 Y
    & ~2 U- ], U4 ]3 r; [& Y: O

    ! b0 e" b- U4 I; ]& \此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-19 20:18 , Processed in 0.919543 second(s), 81 queries .

    回顶部