QQ登录

只需要一步,快速开始

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

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

[复制链接]
字体大小: 正常 放大
慢跑20 实名认证       

60

主题

8

听众

3684

积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    跳转到指定楼层
    #
    发表于 2014-3-10 21:34 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    本帖最后由 慢跑20 于 2014-3-10 21:38 编辑
    " |9 o0 L7 @4 z# ?" [* d  G# @% |" T6 v5 J* L3 i
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。# M" @' J% F0 e& L9 @. |
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    : j5 s+ q5 S) u* ^
    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题讨论群组

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。0 h% A* U4 X$ e3 `9 A" f

    * T9 a/ w# A3 X# k  A+ A0 `: j#include<stdio.h>, W+ d! n' A1 |' t7 r
    #include<stdlib.h>
    3 z6 _5 T: M4 p ; M0 Z$ p$ n. D+ E% U
    struct slist
    * z9 ^4 G- q9 j9 I8 j, g6 a9 C  {* k) V' R% p) k/ h( b/ E. Q
      int data;6 P5 L4 F. Z( I. C: L
      struct slist *next;! m% X0 d! ~8 n3 Y2 N6 y, p
      };
    $ f- @/ `$ m& {6 \  typedef struct slist SLIST;
    # G" \3 |3 @$ w9 M : y7 \$ o7 T& l" g
    SLIST *creat_slist1()
    + v) i* r# g! i: u( x1 t  {$ ~( H8 b! S7 R
      int c;: b2 u' \- @. U: X# |. l, s
      SLIST *h,*s,*r;
    ! l  C& g3 t* G! V; _. X  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点) z' |# H/ y. i/ T9 L
    r=h;2 |. S. [( `7 S7 O9 j
      scanf("%d",&c);, Y. y" n9 c: C) l$ h3 d
      while (c!=-1) //当输入的c为-1时,代表输入结束% K! {" E7 g3 T- I( i
    {
    2 Y8 K' i# H& }+ T) Ts=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点. d& C( O6 o, u( p* b1 P
    s->data=c;! M: r- x/ F3 v/ {" d7 r2 I
      r->next=s;5 `% g" i5 O3 L) S
      r=s;' c+ y/ A0 m0 J# o4 ^/ o
      scanf("%d",&c);
    1 ?( [' {$ ]9 t& K8 o
    " w  f! v+ `& a9 G% Z5 c}3 Q8 f5 J, s! r! f
      r->next ='\0';
    ; s0 K$ G: X; K  return h;
    , H3 M1 O  o% ~$ |1 j# H  }
    7 f. r, {% o9 d3 L
    3 D' r6 D) R7 o1 O; L/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    ( \/ `3 R! B: e6 Q% nint printf_list(SLIST *h)4 N) @* o# @! a# \4 v
      {. m( N" P; |; `7 b+ ]; e; m' H6 Z
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚( g. I3 B0 z8 J/ z4 n( D/ z
    while (h->next!=0 )$ Y7 J2 I7 S1 \7 ]- G1 }9 h
      {4 S, U0 G, |) T$ }: S6 i8 a
      printf("%d\n",h->next->data );0 r) R7 P3 y" t- ]" Q; Y
      h=h->next ;& J: I+ h: }: a) L
      }
    $ a0 }, R% C/ P  return 1;
    . R* j! ^4 S. W2 j$ M5 a* T  }  K. r" \  I8 k; s5 i+ i" {: s
      /**/
    7 M3 ]9 B6 G* p  U$ C void main()  g8 I' B6 J. S/ O8 G$ Z
      { SLIST *head;* U2 g9 j& O( K: m
    # q/ ]6 I3 j8 {; s) t1 K# f9 L
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    6 ~9 n  P  E1 A) W4 tprintf_list(head);( v2 ~) o3 \3 R" V6 u9 Z8 O
      }
    " G; I2 X+ N. s( g8 ]. z
    6 }+ X- P; s5 @+ L$ L
    , u' _9 }8 G; V1 y此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:' C" q: K: T& F0 m. U9 \2 H& s/ O1 V
    #include<stdio.h>
    3 w5 X- O+ b. N3 |$ j. n9 ~#include<stdlib.h>; m1 N( K$ ^/ J
    struct slist
    " j+ X/ I2 H, _2 t; }  Z2 w{* D  j8 ?4 l6 j7 }  X
            int data;
    6 e( o% i- C$ V5 Z* S0 X        struct slist *next;
    ; [  d) S/ O+ k  B0 t5 r8 p" M  k}; $ g3 k+ W% `& d) q# {& Q* @
    typedef struct slist SLIST;
    ( K) f2 F, _% E& v) ~( ^SLIST *creat_slist1(). @6 U  R* J4 H/ l% o
    {( {1 o  Q' ~4 F7 I) P1 _
            int c;
    0 D4 Y1 p. i! u  P& n        SLIST *h,*s,*r;: _3 e! Y( K8 L  X
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点1 F9 z3 P+ N; Z3 i0 l
            r=h;
    ' g; b( c+ f( ?        scanf("%d",&c);
    8 Y( Z5 M7 ?. [7 c        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    3 l: b  C: O" j! D& e( N0 w        {  C1 w% `4 ], c5 S; \, K
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    ; b) r7 V0 q& }2 y                s->data=c;
    : l4 H$ }" S% @# s                r->next=s;6 k7 e" L) Z5 c% X$ |0 D4 Z
                    r=s;3 y6 z0 s, G0 ]0 l1 X
                    scanf("%d",&c);0 {4 P3 i, |% H* K7 J& i5 H3 c. E
             
    ' b, `% F- ~& g        }
    ' {3 l; w& l0 S7 Q        r->next ='\0';8 f1 W  B; i6 H5 B! A, Q) w; W
            return h;
    8 H7 P& r7 c: ^  ]# r% ]3 G" L}% t% ^1 X9 q1 }& A

    7 G* V' f9 g& d. Z/*
    , F" z* ?! h- Y; `6 i' iprintf_list(&head)
      o. g- ]1 w' g6 z5 I, P{        SLIST *h,*s,*r;" J- j7 x1 z9 F( k5 D
            int c;" f8 s% C* h: e
            h=(SLIST *)malloc (sizeof(SLIST) );3 n% v+ d5 d7 Y* D: u  Y4 y# b6 m- [
            r=h;) I$ K# p. ]3 n; m/ i
            s->data=c;
    ' U' _3 M  O3 z5 v" t* b1 H        //scanf("%d",&c);
    4 ~4 P. @5 {* o# s        while (c!=-1)2 @9 F- S! s+ X+ ~, _
            {
    4 }; \! ?2 s& @' e                printf("%d",c);
    , `" p7 c" }! M. I+ o2 u& A                s=(SLIST *)malloc(sizeof(SLIST) );+ y% r; t, J& }; r0 h4 j: T
                    s->data=c;7 Y6 }2 g4 M$ O9 v  z7 c
                    r->next=s;$ E- M  s, h+ c' T+ d
                    r=s;
    1 P3 I; I; |6 C                + E  h. T4 _8 |, Z3 X( ~! A
             ) b2 @% l" l" l2 I- \) ^
            }
    6 B8 i0 k) R9 L# N3 h3 i        r->next ='\0';! [  i9 V) {) _0 T7 u, F
            return h;
    8 Z$ W0 z* s$ K8 P# z}  t7 @3 o3 q" S$ {5 [* _
    */* G6 K( x% H2 l. h; Z
    void main()% F# O& j1 ^8 D7 Y) B( g8 G* C5 P
    { SLIST *head;: u7 o  e4 z8 h2 W3 Q" i4 X
    * {% ?: P$ L2 R' O- t
    head=creat_slist1();                //调用链表建立函数,得到头结点地址1 E% D3 e; W. T4 Q" |
    printf_list(head)
    * H- y" Q8 t: m- |6 D3 n}1 ^7 g. M7 I/ J) F
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    6 H- `+ T" r& W* J3 F$ n8 }+ a#include<stdio.h>
    6 ]9 U6 W1 n- T8 C+ W7 W
    6 l3 @+ _% I+ f: {  struct node
    $ E! D! N# |. \$ n2 W; F" M6 n{
    # R. D* f5 X! ~# ]. C; v+ q  e        int data;$ q  h/ G1 Q* B4 A$ @
            struct node *next;
    " D+ R: y5 l* a& S};5 K1 I6 o$ c7 s# ?  {' T" P/ Y
    //typedef struct node NODETYPE;
    9 i* O: N# ^& k2 \: W0 f+ x) Dvoid main()  s# b' ^2 @% v! q: e" Z
    {$ |! g5 I. K8 D2 q2 Q9 y: @+ S
            //NODETYPE8 g" b4 o# k, }
            node a,b,c,*h,*p;
    * x9 B. D7 y& F3 w+ O8 V, T- l1 V        a.data=10;b.data=20;c.data=30;# d8 W! C9 G+ \* P/ K5 e
            h=&a;
    . D: o# n( q% E  j# g/ {: ^        a.next=&b;b.next=&c;c.next='\0';, S& c2 i+ H' A* x: h
            p=h;5 O' k6 F! [# r
            while(p)
    ( j+ a" J. i% z. D9 C4 t, o        {) P" ~! O& Z6 R) {& }% d) }6 H7 Z
                    printf("%d  ",p->data);
    4 O7 B& `& o( y                p=p->next;5 g2 |( l/ B- `
            }
    ; Y" g) b' ~. Q2 l1 @3 O# D+ d: G        printf("\n");
    2 h1 ?. r5 S$ F0 l! H2 L7 W& O/ p}
    2 ~# Z# T! t0 G; k* t1 M  y
    $ i+ V4 F8 T. Q" s7 K! i, i这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑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 编辑
    $ F4 }% U  d/ ?
    * w+ S) d% U! B. J3 ^$ Uli2.1yong用指针:" r& a; c: k" s. G. L
    ) l* K4 y5 r) C. J: A' i0 P
    #include "stdio.h"
    ) p& ^& J' N, Z#include "string.h"6 {# u  x+ C* Z& b0 t3 ~- \! Z
    void Union(char *a,char *b,char *c)
    # w/ ~! f$ N& }( `! t{
    - L* P( x7 j! e. a1 T. echar *p=a;
    ) ]  a) r1 h# jchar *q=b;. Z/ N/ p1 [5 h
    char *r=c;' h6 J+ S$ v6 J! L& f
    while(*p) *r++=*p++;
    : N0 a6 R* @3 V8 J8 s: jp=a;7 }6 E. W4 p+ ^! `3 v' O
    for(  ;*q!=0 ; q++,p=a  )" x; @5 H; C) T! R' L8 Z# a
    {while(*p)
    5 e7 W8 @9 h/ |1 }3 E$ N& r; Uif(*q==*p){q++;p=a;}
    6 r# h9 \7 p, g: p! [8 t5 velse p++;& `2 p: W5 Z3 ?2 ~6 K/ Y1 f" B
    *r=*q;0 P& ]# e5 S0 Y. m! l
    r++;0 c3 f: X7 x, o1 B* S8 \' e
    }
    1 c4 D/ h1 @1 S' R1 M- A; Q4 |*r=0;
    7 D+ R9 C* N: A+ V/ K' b
    ) G8 W# W" H. u! j}& G& ^6 R8 m" i1 k+ V) t/ T

    9 H8 _3 U" Q: u. V8 D0 q5 O" dint main(){8 e. S; m: B" [0 J5 e# E1 w2 t

    0 _# n3 m' g/ s/ S% _7 e' \& y5 Zchar a[10];1 W1 |) z' a% J0 ^9 L
    char b[10];* T$ D! H/ A4 Q; m$ T
    char c[20];$ K/ v9 r! q7 a2 u; F* t) [
    gets(a);
    : i: G6 j, d4 G' w: b+ Y5 ~printf("输入的集合A是\n");0 l, h( B9 v% D3 h- u' D  H0 ?
    puts(a);: Y+ f1 X1 B9 d: l& b8 L( E) B; C

    , _5 c5 t2 }1 c; ygets(b);" x" f" a! o3 r5 B/ z( M4 r
    printf("输入的集合B是\n");7 \' G$ k$ c' l5 @: f6 e
    puts(b);
    . y  m  s9 v, }1 N: x9 Q9 x$ f, ^; e; I( F0 y! I7 j/ h
    Union(a,b,c);2 I. i& B' {  q/ O4 n$ h
    printf("last得到集合C是\n");: ], t; u, T1 l/ _$ v
    puts(c);
    * ~( C. N8 b& }; ?& L# treturn 0;
    ; D* j8 L0 t2 n  Y! c}
    7 N# \" [5 m/ f) M# T7 _$ Q
    回复

    使用道具 举报

    慢跑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集合。
    5 J* O8 v5 e1 X2 ]' x3 \这个代码是用数组的、算是比较简单的。
    ) h7 L" V" E: n3 W* L& d& w* y" g8 k) Z
    #include<stdio.h>) |! b+ r7 n7 k) K# H5 w0 d2 S1 s
    int L_length(char []);
    - D  h3 r, D( s3 xint main(){
    3 N  ?% q* ?  q. A$ x# n: q  ^        void Union(char [],char [],char []);- D& ]7 b1 {2 Y1 k7 u& N
    / c. w7 s3 @% D. `9 q/ J
            char a[10];! a) A( P! R' X  e6 l, T0 T
            char b[10];
      r. \6 m$ n: o- I- h  ]        char c[20];# P+ e$ J$ B- W7 {8 J/ }
            gets(a);9 ^- A" E' b; q
            printf("输入的集合A是\n");1 Y" A6 Z& ?. Q. ^! }$ q1 T
            puts(a);& J+ O; L, K' d& ~' m1 b! `
    4 W/ i$ d% b+ }. }7 X" }
            gets(b);. k9 d2 m# f0 m+ j- a
            printf("输入的集合B是\n");: L  v$ p7 R) D: C
            puts(b);
    ( a. N' g5 L9 z1 R. h; _
    , I1 l+ e6 x/ g  f3 `* h; K        Union( a, b, c);- R( T' [1 o4 U) q. b, e
            printf("last得到集合C是\n");0 H! E( X. Q5 A3 c, s0 {, h  Q
            puts(c);
    ! S! {# \! F* H8 E+ ?! ]$ P        return 0;( G' E7 a# g% x6 j) [6 ~4 Q% A4 ~$ ]
    }
    / c2 D" a- s3 H. h* D& R$ N/ g* {8 {  P, u
    void Union(char a[],char b[],char c[])
    & J4 ~( N6 F% X9 b' C  l" e! T5 v{7 y8 R' ?, H* ]2 m
            int flag=1,t=0,i,j,m,n;
    ( `: R$ M& x" ?. _# Y/ y        m=L_length(b);
    - t. S( b; N9 t1 B        n=L_length(a);
    ' f5 ]9 f7 i$ N+ |- i% r        for(j=0;j<n;j++)
    3 ^8 y( V5 S% ~. p3 t        c[j]=a[j];4 x* _) i" \2 j
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    9 g$ b& T* i1 i% C* s  v                {for(j=0;j<n;j++)! N0 V! a& \% ?3 U  N8 P8 m6 b' q
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    6 F* U7 M9 C9 @' m3 b1 P                        if(flag) {  c[n+t]=b[i];t++        ;}4 d3 n8 @( o: X/ H) Q- V
                    }
    ( [! B; N# D7 w+ l        c[n+t]='\0';
    , X3 p, F/ D; m7 a. O. q
    & L$ Z; L5 ~& c# u3 S}  u& G+ q: c: B

    * `' W" S4 K" P$ `int L_length(char a[]): P! r4 y( i0 ^2 B. h) |
    {
    / L9 m' d# B. q' n; E/ x        int i,t=0;;& |7 J# M. x8 X* }1 F3 L, u7 p; j
            for(i=0; a[i]!='\0';i++  )+ E0 C6 @$ E6 J$ @1 A, V
                            t++;5 k4 M% D+ x" |. [" k
            return t;
    " D/ s0 s: W3 t6 w} % C# S1 P/ Y1 g0 S
    6 p/ c$ X" }; x3 l  f. s
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-19 20:13 , Processed in 0.479599 second(s), 85 queries .

    回顶部