QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2123|回复: 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 编辑
    7 ?# K' ]# ]% u8 x3 Q
    ; L2 u! U. S+ j1 `; f% K1 m) Q计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。8 M- c* Y. y# S7 P
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    ; L5 t. n# G8 C- I  C
    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 n) {6 r5 y7 M; {这个代码是用数组的、算是比较简单的。+ g% U% u. h, x2 w+ a; L* w" n; n
    : e9 w2 e* e7 n* `
    #include<stdio.h>( j2 ], L6 V: f
    int L_length(char []);
    , u2 X6 }# [' w+ u- N' T( gint main(){6 g6 Z# _( H2 m3 N% X8 {
            void Union(char [],char [],char []);
    6 {% A- v  v/ C. N; g2 x) u6 a
    ! p% s# K; s9 L/ p        char a[10];
    / x: L1 R  s- x& |/ E% h& T$ J        char b[10];: `; p7 K; w  F
            char c[20];# p! C" m5 u. c4 T: X% B7 Y
            gets(a);
    6 @) |' {) a+ A) M  d6 B        printf("输入的集合A是\n");
    5 O! M, s1 L; c  P/ ?" M: X( A' {* w7 v        puts(a);" P+ u; F& T! i

    6 `3 A) b. y* ]9 P1 t        gets(b);8 e9 I5 A. p! w. z, B/ J9 T) G
            printf("输入的集合B是\n");
    3 X# t- m$ |" k7 }' v# D        puts(b);
    # v1 F4 L" d6 P8 f* r
    . N. H  i! V4 s% b        Union( a, b, c);* h4 a! k2 `5 m
            printf("last得到集合C是\n");
    . m8 W0 }& p9 f; l" x        puts(c);0 w! c. B! b6 S1 m9 W: O
            return 0;! T- {0 q& p" O& I' S
    }
    / Y5 q, L9 n4 J, B4 f5 N, g- R, `( H4 k: a/ E
    void Union(char a[],char b[],char c[])0 @, c6 `" y/ a3 y/ Y: b! o- R- u
    {- q) m9 I: v/ v6 W" Z
            int flag=1,t=0,i,j,m,n;
    . ~- Z) g9 y+ z        m=L_length(b);
    : n# Y' d5 {) j# |! L        n=L_length(a);0 T; ]& i! F% E8 j, F4 D0 V
            for(j=0;j<n;j++)0 t  z# [5 c5 q7 {+ H) p2 u- P- H6 N
            c[j]=a[j];
    , I. ]) x1 C5 P2 @1 K8 k        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;. P( F& `6 N5 a* K; O, m0 A3 B
                    {for(j=0;j<n;j++)+ \* u, T4 ?, t$ G$ q% g
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了7 v, C/ `& u, T! f" e
                            if(flag) {  c[n+t]=b[i];t++        ;}
    6 u: J3 b/ O( z1 \                }) y8 T! E- q! o3 }1 o+ ~/ b$ x0 ^; X
            c[n+t]='\0';* w; S8 V& J/ y  ]( K; L. A) k

    $ v) G0 W1 m1 }% g/ F9 j- R8 V}1 y4 t8 f' y& f% E( n2 C

    ( ^( m) c. `" w  G& Nint L_length(char a[])! L( x' n7 X( w
    {9 L' U, n2 v3 G+ b1 y  n
            int i,t=0;;
    & ?/ J4 L8 }8 z8 F        for(i=0; a[i]!='\0';i++  )
    8 [' u% B# ^! t/ p0 ]! b# o                        t++;
    ' m1 {5 G# D. H- f' k" H' s6 ~        return t;; e' U/ O( n% K4 W
    } / i  s5 N  {" t; X8 \5 W. C
    1 `" }. f7 w; E) n, {2 J* ~4 [
    回复

    使用道具 举报

    慢跑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 编辑
      p9 V7 F/ L$ b" P% }9 {) _$ [. G4 G; ?3 S$ ]
    li2.1yong用指针:, v% x" }! e# ]* d+ {9 ^  x: s
    * n' j: w9 x) P! f
    #include "stdio.h"
    8 N' l: P3 j0 E5 n( m#include "string.h"3 ~( n2 f6 L7 X$ V# P7 k& g
    void Union(char *a,char *b,char *c): _* ^7 ?- n' e6 i2 [6 x1 H; q- P
    {6 G' r  p( g2 q1 ~9 X% ~9 G
    char *p=a;3 d7 r) F7 L9 j" D# P3 [, x, [
    char *q=b;. R2 A% R9 m2 K1 u) Q/ f' h: e" z
    char *r=c;( u) t+ `" q4 v  o, i1 }8 q
    while(*p) *r++=*p++;
    6 X2 R! q( t4 q6 N9 ^. s" bp=a;
    ( i9 j: g! `6 e3 R! o' jfor(  ;*q!=0 ; q++,p=a  )
    ) }& k9 ~& X, w- ~4 U5 n7 ~; Y{while(*p)6 ~! r( u+ O% i7 ^
    if(*q==*p){q++;p=a;}; z  {% L' t" P5 x, }
    else p++;
    $ k8 ^8 L% o9 c" v: s) q& G3 @*r=*q;
    5 ?  U9 T0 P. w8 I9 A  \7 Dr++;
    2 {- J3 d( ^3 N' q7 P2 E}9 ^) S0 {- P! m( `- q
    *r=0;/ |. Z9 D, e6 t1 n
    4 N( C) d6 w- J- M; l& V
    }
    $ F9 l6 L( k: x7 y
    7 w' p  |. P, h3 O1 Aint main(){) F* V) d* ^9 \6 Q: |, g) P+ U
    . O; W) J) b) ~1 m0 s
    char a[10];
    0 z, n, Y3 z3 N: }char b[10];  Y9 l0 F+ P/ T' a7 N; ^
    char c[20];2 V( b8 `, e& T1 ]  Z
    gets(a);
    / b' |+ S; g2 R! x2 L1 U: X3 }printf("输入的集合A是\n");; Y2 L5 u' @/ E
    puts(a);1 a5 T! |0 _  P' I; D

    0 R3 J" l: j9 Y2 |5 }gets(b);- l+ C/ l% m6 N: ~
    printf("输入的集合B是\n");
    & _: E% H7 d! D. m6 l4 U  ?& }& Eputs(b);( A# `# ?8 `  y+ p6 v
    + H  |' }2 J# L' r- K) M- j3 T; v
    Union(a,b,c);% F% x$ z9 O0 {2 y* ?
    printf("last得到集合C是\n");, @' [& m# ]. o1 n
    puts(c);
    ; P6 ?6 h% k) o( Z9 A+ Y1 f+ Jreturn 0;
    ! n- }9 r% {5 Q( h; H}
    ! @7 Z$ r% `/ h. n% y$ A# B5 l7 @
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:* ?. D7 G: m! v4 m( A6 z, L
    #include<stdio.h>+ l9 G- x! @% M6 P5 Y( Y3 R" w3 @3 K) z

    1 J2 l% ?2 A) @1 |& Q  struct node: \  T% b6 f/ C+ x: T+ m5 N0 J; @3 ^  r
    {
    ; f, B" C8 k( x5 ]" A* l( O        int data;! i+ P3 i, C! a
            struct node *next;# z  Z* q7 V) U( C$ O2 X3 e
    };
    4 P- K& F- B7 N6 X//typedef struct node NODETYPE;- z2 U6 H( n2 N' U8 Q+ ~
    void main()
    + I% R' ]  U1 ~5 ^, A9 D; J{0 s9 p3 H1 b! A- Z; d* ?. V. f0 v
            //NODETYPE
    * X* Q1 J! }& y  `# w, b        node a,b,c,*h,*p;
      S' w0 q; |# [        a.data=10;b.data=20;c.data=30;  G5 a  _, S4 s2 a& o9 B2 T! K
            h=&a;
    % g: A0 X$ m$ h) D- M& r7 N. }$ w        a.next=&b;b.next=&c;c.next='\0';. m6 }! j7 f: c1 x
            p=h;
    3 q' k3 n! f4 @! Q4 Q: W& m        while(p)" }: M$ k( A! k/ ~& o% O1 m6 j
            {8 f4 g* f( N  C$ g
                    printf("%d  ",p->data);: U% C9 F2 b+ j$ m2 J
                    p=p->next;
    5 N7 q- T0 l$ N; O  V        }
      S2 n" f% a7 m3 Z) Q        printf("\n");( z2 `8 s$ J: ^0 T# B8 E' w% D
    }
    : l8 S* T) y2 n5 y+ h- F. W, ?. s6 K$ U/ @8 v9 s, X) o. p$ V  `
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    ! H, n8 G, L: [, F#include<stdio.h>
    8 M% s: W) W0 K/ @#include<stdlib.h>
    : Q3 E0 u8 ?/ E! j) `: astruct slist
    2 J; {. y( D. W4 D; n{# C2 o6 v* @8 i0 \9 E
            int data;
    0 e$ S- }& q9 f6 f# j        struct slist *next;
    " c6 N: E3 h+ z1 V$ T};
    - l; v( j* |; j. K1 f/ R; K+ @* [typedef struct slist SLIST;
    ! U9 O: I7 e5 [/ i8 fSLIST *creat_slist1()) O7 _; w9 R4 f8 G  v: b
    {, P) N- }! \/ Q4 P
            int c;
    6 g* S( g+ C; x7 v        SLIST *h,*s,*r;6 f; |% v3 l. |& q$ d
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    # ^  r7 Z" R* j# Q9 D  g: H/ `/ s        r=h;* M4 N* @( K2 k6 g( J
            scanf("%d",&c);5 O% E# E4 c& _2 W7 B+ e
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    3 H7 q$ [/ ~+ K! |: X! `' G        {
    ) j) W' |- C8 j6 h2 C                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    & O) N" E% d6 \8 U) B$ a9 K1 q- _                s->data=c;# ^+ ^1 h. J6 v( F' s+ u$ ?; |+ N
                    r->next=s;8 E( A" Y( a% k! x( o* L
                    r=s;
    ) u  N! }2 G$ ^, y+ o. m                scanf("%d",&c);
    * Z5 d9 X0 z5 h, Y; _" X: a% f; Q. W         ; g/ T7 Q1 v, D
            }- d% X( @9 ~- r5 \2 s7 J
            r->next ='\0';
    # @3 L! I' ^/ {+ y/ R        return h;3 `* w5 V6 e2 E& ]  t) \7 |
    }
    9 u7 i( y5 g+ x. ]/ [0 H6 X! q6 T4 t) x7 W; M! x' o. l
    /*8 J/ ^+ T: ~* W* o) u
    printf_list(&head)
    ; n) j5 B2 Q4 _{        SLIST *h,*s,*r;
    5 O9 J; H5 U# O3 @9 m        int c;4 k, C9 }! T' Y& Z) ?
            h=(SLIST *)malloc (sizeof(SLIST) );
    2 \+ C* t! M2 Q; P+ @9 e5 u+ g        r=h;
    " p# f- I& n5 c; G* `( U  c        s->data=c;* A: s+ p, C. ^2 h
            //scanf("%d",&c);. E% c9 ]: U' M2 @# X/ b+ [
            while (c!=-1): S0 o- ?% e" W
            {7 X' l3 ?9 _2 [% v) g2 |. m
                    printf("%d",c);
    9 y3 e1 u* b0 t8 X0 g' V  R/ H                s=(SLIST *)malloc(sizeof(SLIST) );' x7 z) P% ]% I
                    s->data=c;; z3 j5 D! c; y5 E' i8 O
                    r->next=s;
    / v5 M, b1 h: W3 g                r=s;
    % A- R7 M8 S. o, W% ^                . F% P: a4 F# m( S0 Z
             
    , d7 V! J6 X' S/ e* M  m) s# ~        }5 M0 [. {# B! V4 J: p/ s7 P! X: _8 S
            r->next ='\0';  Y% i2 U" x4 M) m$ i4 C* Q/ ~" T
            return h;5 g; f0 S4 p' h, I0 F
    }( i, S1 G/ b+ n; n  n
    */
    . U. X( ^+ t! l: H, ovoid main()# l' U/ f/ R: e5 y9 C- L1 A
    { SLIST *head;
    / }/ {1 C5 u( g2 Y2 {5 q8 Y
    , S: d" \0 U) p& s. Ohead=creat_slist1();                //调用链表建立函数,得到头结点地址
    # c; f+ G3 R3 ?% qprintf_list(head)! b0 |. }2 V3 k0 C
    }. b: f$ s+ w1 P( ~; `* M- m
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    $ h( f$ O: G& c% e( K6 e# C7 o6 E0 T5 w* A5 x5 N
    #include<stdio.h>* P, f9 ~: w2 ]+ K" G
    #include<stdlib.h>4 W1 ?: f$ D3 d5 Z: M
    9 X3 y- K& L5 M1 ?$ e
    struct slist
    2 U. ]/ Q9 u8 `  _3 ?  {& O; ]2 y- A6 ^+ J/ |# i
      int data;
    ( I$ O& g* _7 j2 ^3 k* l  struct slist *next;
    9 A! b* u' T0 f) T3 A; U) Z  };
    0 |2 o  O5 {* S  V3 o/ T  typedef struct slist SLIST;
    + q2 F, m/ u( P$ T, Q: x
    $ r# V' @9 z2 i* t6 v4 y. k3 z3 M2 e SLIST *creat_slist1()0 J& k: y: u9 K0 b8 _( x  E
      {7 [8 X3 W" a# m% ~/ v' L: U( t
      int c;
    * T# q; q- j4 R  [+ k6 d. o0 F  SLIST *h,*s,*r;
    % @) o3 Z& c: U6 I6 O  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点0 X, f# r+ ]% h8 \; o  _( _
    r=h;
    2 W* M9 B: }2 e  h5 F* r  scanf("%d",&c);0 o0 K; W4 V9 |- q: Q
      while (c!=-1) //当输入的c为-1时,代表输入结束
    2 S7 r# k. Y, a2 H3 A# t{
    . l' u( ?: C& x# S+ ~0 _; zs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点2 i0 n6 l8 u5 \( k
    s->data=c;
    : }. r3 _% H$ r. X1 ~# m  r->next=s;
    * [5 Y) O* K  |1 w  r=s;
    4 T- l: U/ z* V" T, s9 }  scanf("%d",&c);3 G8 l; ~! T8 c' h9 j
    $ K2 k7 G2 B  u! Q6 L, Z
    }3 u" S7 Q$ ~% E+ h1 N6 e
      r->next ='\0';  ~6 p$ T; a- \' f# r. N8 j4 J2 D6 I' d
      return h;' P0 w8 t3 j: s7 g2 L5 N( `5 X
      }
    : E( o% I: T0 r+ h* o3 a0 { * P' r9 z0 b) P% r# N# n: V
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?) i# U8 Z9 [2 ?" e
    int printf_list(SLIST *h)
    $ O9 T* e! h) U- S9 r  {
    - z# a& n; L! T, n) V  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚) k" [2 M; s4 \$ m/ d  X
    while (h->next!=0 )9 H7 L# l1 U5 I, J# q
      {4 D) ]: a; O+ x) }2 n; I; j! s5 A4 t
      printf("%d\n",h->next->data );9 o6 }; A9 T8 Q$ c2 B! @
      h=h->next ;( I; U" f" e0 Y9 q8 z
      }0 c0 I* V3 J# [
      return 1;/ D' K& D# D/ W0 y4 }# ~4 |, S# M2 _
      }
    ) j  P6 H3 j: g  /**/0 y# O$ f( K4 y" U  @! L2 O
    void main()9 A* r/ d7 o1 q' q6 ~+ y
      { SLIST *head;
    - d: k9 Q! Q3 h" j" c ; ~- J5 K3 }) Z6 v# {- B
    head=creat_slist1(); //调用链表建立函数,得到头结点地址! @; \2 T1 C# I, [' }
    printf_list(head);
    ' D0 w- _% U. B2 T: K  }
    % R9 ~5 i* S8 Z9 x! D# ]2 M( q* y: B' F5 h- ^! c$ |2 |
    7 V$ D7 C3 E! a6 {
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-8-4 06:12 , Processed in 0.840452 second(s), 89 queries .

    回顶部