QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2305|回复: 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 编辑 ) U) g! U9 h* ]" ?6 a/ S
    + J& k- N, D8 }7 V# i: `9 F3 U
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    : Z) a5 n1 Y& `" }刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。. u* d3 G2 b0 L" c
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    8#
    无效楼层,该帖已经被删除
    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    ; a* e% Q/ K9 `5 v$ G' L( V
    $ J3 Z+ u$ n. `6 q: _8 i#include<stdio.h># F$ r. w1 I: O0 L2 Q
    #include<stdlib.h>" ]/ K( \" }2 I
    ( a* Z- U6 h% ?
    struct slist' g4 L# _  f( P& O$ d
      {" Z2 \9 D- p: Y& a' n
      int data;
    8 g; g% U, D5 E- d- v6 k$ l  struct slist *next;4 l  F' ?% O5 O, \- m
      };
    * N" ?( y- \* Y. y; A  typedef struct slist SLIST;
    ' f- G( d+ B) D" q " K  `- ]1 r5 e* V- Q. K
    SLIST *creat_slist1()0 h; R" S3 A# [3 z) r
      {/ J1 @# m8 E5 S8 P
      int c;  ^9 ~2 u- l( t: E  q
      SLIST *h,*s,*r;
    9 j: w/ B! E, J, b  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    ) R* t0 S) T5 D% @2 ?0 Q  Er=h;8 e6 ^7 p/ }/ {
      scanf("%d",&c);5 _& r) O4 R: j5 k
      while (c!=-1) //当输入的c为-1时,代表输入结束
    + z4 n# x6 }5 @, e" I{
    % ~) Q; K9 D9 p( p7 ?! P* w  Us=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点9 B7 U% ?& N8 F0 T4 a# r
    s->data=c;
    * X0 v1 Q" g# c; p1 `# z9 ?  r->next=s;" w9 @. a! y( `+ E; o1 k" W& M5 |) c
      r=s;$ C' e; W* b  y. |& O
      scanf("%d",&c);/ G% q- H) o6 S# k, ^% t& o3 X
    * [, P+ `8 w1 q6 b. c1 E, R
    }
    ( t. k* t9 r. C3 B6 a0 x  r->next ='\0';, f" x: d  s& p! F* ?) q) Y
      return h;
    8 o* c$ G3 L9 e  }
    0 t. _. W0 @* T' {- I $ ?- _" z5 E7 B$ ^# k- w
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    / ?$ W& L4 L8 x- j. `! [) z% Pint printf_list(SLIST *h)
    # g" O" [6 R( O! }: t1 z  {9 }# Q& B7 {) S0 ~
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚- H% b* o6 [" L8 n9 s
    while (h->next!=0 )
    * D9 d  x; I5 p* B; C* F& M% A9 X" j  {
    ' V) u" ?! [( a  k. W" U8 j3 |* G  printf("%d\n",h->next->data );2 F& O6 F2 t3 Z) z
      h=h->next ;
    " y" g9 \  [5 E  u0 s  }
    $ |: B: M+ F+ o5 w2 z  return 1;
    . f& W* a3 y) R' s. a  }
    3 v9 y  r/ e# I% B5 a' V# x  /**/6 ?2 T; [4 h: @1 b8 h
    void main()
    1 K# Z+ T1 t3 g5 Q9 S+ {' A  { SLIST *head;
    # K" _( J$ U7 Q) N. u: |
    ' Y1 Y- s5 ]7 T' h* a8 m  \head=creat_slist1(); //调用链表建立函数,得到头结点地址! W9 {6 d; [, Y" |
    printf_list(head);. i& v% }6 H  L  p2 z
      }
    . L2 d! h' f3 f; r( U/ \1 s0 T. ?1 W  R, D; v9 p6 W1 |

    1 t5 Q/ ?4 h5 b5 B' ?9 U& v; v此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:5 J& s0 l3 M- M! Y+ |  B9 l" u. z3 k
    #include<stdio.h>2 [* @3 i' n0 ~& J, o9 J
    #include<stdlib.h>9 O/ l4 X9 k$ Y% W
    struct slist  V# d; b. o7 R. E  b6 K2 h" J' y5 f
    {2 M  \9 o, i/ ?
            int data;
    / w2 w- ]. R* h3 f6 }4 s' R        struct slist *next;
    2 c. B9 Z: \2 ~};
    & u. W& L  l5 N/ i4 |$ itypedef struct slist SLIST;
    $ w, e) @1 ?7 ~7 \) WSLIST *creat_slist1()$ G# F: P4 X7 D$ `: E
    {: D# [/ l! h  S# B+ [$ S
            int c;" D8 `' y1 Z! r6 D/ L
            SLIST *h,*s,*r;
    6 z) p' F6 J3 p" C* W; H0 Q) D& i        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    ( M7 r3 A9 |' z9 O6 k1 \: u        r=h;; O( K* B1 [, X# x
            scanf("%d",&c);
    ' w7 _7 [. B( O5 x6 ^- H        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    4 X1 D6 q2 R/ X2 q. ?- m4 N        {
      n( I( w7 _0 }0 _# `* \9 j                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    / s4 J1 V' _9 u; G. o9 ?                s->data=c;/ T) O1 J& Y5 {( @) J% h4 J
                    r->next=s;
    ; t& x, i; x! q4 C                r=s;  i7 z& u' I; ?# C! m6 G) y$ V
                    scanf("%d",&c);& c1 k1 f% ~9 l- }8 V3 D' W8 e
             
    % A7 h7 ~6 [6 ~. ^/ l" z5 w* _        }/ J/ u8 a+ j( c: ^# s  q( y% y' c0 j- U
            r->next ='\0';
      X3 b* M7 L8 _- c! }        return h;
    ! z$ C9 F4 H' W4 h$ C}# S7 `0 P# p0 h0 I# P9 R% w

      U( K4 O5 X9 m" G! Q0 r- C/*
    : }0 D- b+ J2 C1 ~6 b+ q; Q! Fprintf_list(&head)
    $ ~& q; r2 a! ^" q( a  v: t{        SLIST *h,*s,*r;- @& n3 [: @) T
            int c;
    - w! N/ ]; k% v: c1 K9 K: H        h=(SLIST *)malloc (sizeof(SLIST) );2 y# S# P5 ~; Z
            r=h;* R9 t& J% V2 P' Q3 U' ~* X
            s->data=c;7 M9 j4 I7 A" }3 i) k
            //scanf("%d",&c);6 ^/ l. A) _& w
            while (c!=-1). i5 A/ E$ S  t' G. y' k# g
            {% m. ~8 ]2 K" v- m, \2 b
                    printf("%d",c);1 E2 k+ S! Q& q$ h" O* ], b! q
                    s=(SLIST *)malloc(sizeof(SLIST) );5 Y" }& {: v; w
                    s->data=c;( I5 R. J; T" B* Z) `6 e, K& t
                    r->next=s;4 j5 h! j) B7 w! t9 D
                    r=s;, t% c6 \6 I5 }2 k4 b3 _
                   
    / B% ?5 _* i4 C  U3 o( B: m  f         
    5 L5 v* \4 J/ H: N5 }( n        }/ h: z# X; C. H* z+ J% B5 K
            r->next ='\0';
    & [4 h9 N8 D# D# M        return h;
    " H; ]' E! t9 C: K, L; W+ k}  U6 E% @" q4 }; k3 n" S
    */8 X& L3 \% L& |1 C
    void main()
    . x" ]4 C4 A. K- a$ P; y! ^{ SLIST *head;& H) T, u9 {6 i% ?' X

    ' y! q) w, U! ohead=creat_slist1();                //调用链表建立函数,得到头结点地址
    5 Q% ~; i/ D# Q, i' p% Fprintf_list(head)
    " ]8 G/ |) _$ F# }0 Z( N3 A}# t4 n4 d. d/ B2 y8 K. T( q
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    3 F3 l  A8 p/ Y' V. A1 J0 W$ R# V#include<stdio.h>
    & z6 T# {6 w  r, e  H9 ]8 b1 ?2 |3 \4 Z: R
      struct node
    # l/ v4 m6 f0 V{
    5 D& W, z( Y: {5 c! X9 g0 ?* ^        int data;& J1 Z7 P# F( ?, ?* h8 j. G7 V
            struct node *next;
    , I& n! B  u9 Y4 F8 o1 H) r0 z0 M' B};; ^0 o0 Y7 n  ~; Z! C7 H% ^
    //typedef struct node NODETYPE;6 z/ z% W- x' q
    void main()
    1 A$ Z+ H" ?3 Y# C1 V" R{
    9 r, u( N# P6 B& u) t        //NODETYPE
    : t, K* D6 e, u5 b! p$ h        node a,b,c,*h,*p;
    3 }# C; u$ N# a! [; ~. n1 C        a.data=10;b.data=20;c.data=30;
      a- q1 C: r$ R        h=&a;  m7 K5 d% Q8 X' }# P/ T% s
            a.next=&b;b.next=&c;c.next='\0';. I" y. _. K5 w, w6 Q" l; U
            p=h;. R& |6 l" `$ _) I* ~
            while(p)+ j3 t* M1 v6 [" w4 \* `3 Z
            {
    / D0 R: b7 U7 m$ i+ f! a1 w, Y. k                printf("%d  ",p->data);9 ?% n- ]% V( L7 M/ I) m6 h
                    p=p->next;+ C' h6 x$ S% p' Y
            }, H+ _( V: B- }0 }% _0 v
            printf("\n");  `( j% E0 j- |" X/ X$ w1 `: q6 t
    }
    . p0 k( `/ z; X$ [
    3 r  X0 v0 }( v0 U+ H  @这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑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 编辑
    + L* X& Z- {; _% |6 D
    $ Z9 U+ c9 Z/ L: Kli2.1yong用指针:0 R- k* b) [$ r4 |$ P

    ! h" o( m/ E9 l! G+ o. u  g#include "stdio.h"
    ( N' g& W1 Y. g3 q' }. K9 s#include "string.h"  }- m$ C5 w" g3 a" h- n
    void Union(char *a,char *b,char *c)
    2 D0 v1 E6 T# d5 c3 f{9 h/ r% h! v! |$ f( {" K5 r3 e
    char *p=a;4 w7 I# a1 o, L! f: B& i2 R, A
    char *q=b;% ^2 [  V5 U( H2 ], i" D
    char *r=c;; O& u3 B" x# G/ a- S4 j
    while(*p) *r++=*p++;
    . {2 d3 w* B" V! J7 ?& E8 W& h/ wp=a;
    8 v7 R1 g: ^& Ifor(  ;*q!=0 ; q++,p=a  )
    - q% k$ N9 e0 r# i4 i{while(*p)
    / N$ j6 B" F( d. Z; Lif(*q==*p){q++;p=a;}
    * l: S: Q, O2 [4 L" o4 J- lelse p++;
    ; x) t) F& ?- e' C*r=*q;  @) B5 n4 y1 l' j
    r++;4 E6 v  _7 F6 h5 ^6 ?4 i
    }0 G' ]; A* R0 i& E
    *r=0;0 c- W8 }7 I. T8 ?: K
    % m5 r, y! `% V, b
    }
    ! U$ B) h% s7 M" S5 D* `. m1 `. ~9 P4 ~, w
    int main(){
    2 x# u  Q8 `4 W6 G6 [& I7 ^9 r2 E( z- n" [" |6 M
    char a[10];
    1 c: l1 ?2 E" d6 |, fchar b[10];# }. D2 Y9 F/ ]& b
    char c[20];
    - Q7 G: \. p- J  m8 l8 `2 fgets(a);
    , V5 T( G- @5 O* i. T' J. mprintf("输入的集合A是\n");& ^8 v. J/ f4 ?: `3 j
    puts(a);. n0 o+ z. o& |* ?
    & ?" x  s3 J+ [
    gets(b);* v# o0 }7 f. l
    printf("输入的集合B是\n");. I- y: L' p. M8 i2 v: \! x( ^
    puts(b);/ G, D& B' O& J3 A9 l/ Y$ H2 q
    1 U9 u2 ^& N! D! x# w0 ]: r! ]
    Union(a,b,c);
    $ a% K8 o# [/ m+ V0 H/ d( jprintf("last得到集合C是\n");1 H; U2 b5 ~+ p& V: e& q( J
    puts(c);
    * N+ N. y8 x5 C% Oreturn 0;
    + n1 l% E) B) p/ O, M8 S0 B& X}
    + V( X; v* P! F4 B; @1 Z
    回复

    使用道具 举报

    慢跑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集合。. P1 F- X# O' B) L! z( }! v, B
    这个代码是用数组的、算是比较简单的。
    " _/ F4 |( W; ~1 I* T1 r5 k/ D" m5 B0 l3 W2 j3 ?- D3 e6 y
    #include<stdio.h>
    ; d4 |  q9 [* {$ Cint L_length(char []);
    5 i0 j- x% v* ?/ I4 u. Zint main(){
    2 k) a9 E0 Z6 K; k9 {0 Y9 z- o        void Union(char [],char [],char []);9 V; S0 E! H. W7 {- @

    8 c2 B- D6 Z& ~        char a[10];
      y8 E0 U% {) V6 o# j0 o% s        char b[10];1 J4 Q1 i3 F+ z8 r, H2 _4 v/ U
            char c[20];
    5 R% t; {7 ]; b2 K) j        gets(a);
    % I- A; I# _# x  _        printf("输入的集合A是\n");$ M8 a) |. o( m% U. B. ^! O/ q; u5 v2 I: _
            puts(a);
    3 ]" w; U8 ~! m! Z( {, I0 y) J5 S : G; Y% Q( w) W
            gets(b);" p! V7 }' [/ D
            printf("输入的集合B是\n");3 R' u3 {1 B2 M- O
            puts(b);
    ( A, t% m" c+ w" Q# H. J! ~: c6 h# s3 {7 Z3 h6 G! p
            Union( a, b, c);
    5 n- d8 M5 ?+ S7 T' V        printf("last得到集合C是\n");1 h( Y! `, F/ d2 Y# Y! |! h
            puts(c);
    0 {5 h2 D% E* u: [# N        return 0;/ G) l! M2 f% E' `. i, W
    }
    8 P  X) b8 N) A, p4 Q7 i! O8 M8 C, ^$ R6 f1 _4 H7 n
    void Union(char a[],char b[],char c[])
    # K) o2 O$ R( x9 W5 F4 c2 @{! B% M  f! P$ [& h( E; i
            int flag=1,t=0,i,j,m,n;
    5 l: K2 K7 C' I. m$ }2 V& i        m=L_length(b);
    ' b! i5 C+ t  H6 _* |# ?9 H( P4 D        n=L_length(a);8 B: p3 u7 L4 ]' m
            for(j=0;j<n;j++)
    7 g6 ^1 s8 B$ x# Z6 Y        c[j]=a[j];
    ; ?  d  s0 ?9 N4 I        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    0 n5 V- p2 {: l                {for(j=0;j<n;j++)
    9 M9 o$ q: Z1 J  Z+ o                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    $ g: H/ T' n" Y) E* L, K9 B% K                        if(flag) {  c[n+t]=b[i];t++        ;}; B) j% V3 n& s7 v1 E! B' X
                    }
    7 m8 A6 r9 M2 p, p        c[n+t]='\0';
    3 S1 N0 G% N- Z! V0 j4 I) p7 j+ _ $ j. L/ I. K' Q) `1 N
    }7 [3 K' l" g! A( p, J
    7 F+ r9 @0 Z" F7 P0 z9 z
    int L_length(char a[]), J( I0 i9 L( r
    {/ c" q! E9 R$ l9 ~8 ?
            int i,t=0;;
    : x& G- v/ @; I        for(i=0; a[i]!='\0';i++  )
    - f( d" m/ {; @7 \" Z" @+ x" |2 m                        t++;5 p8 g) h5 X1 M( r' B) e
            return t;
    5 z' ]! F" m2 v4 Z! j} 7 `4 `4 m0 `0 i( k4 A% r- l: j+ @, |
    5 j8 T) c! y/ c, B& F/ @
    回复

    使用道具 举报

    慢跑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-4-14 17:09 , Processed in 0.491973 second(s), 86 queries .

    回顶部