QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2438|回复: 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 m# J5 f- I  H3 K! v! j/ B

    / b1 [% Z9 |& F; K计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。/ y4 b$ e0 a& f! }
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    / Q: t* v" @+ V% m- ]& `% \, `3 ^
    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节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    # l3 O% o8 H4 |4 |0 m4 N% W/ n0 O1 Z1 |: ~* v" B5 Q9 \
    #include<stdio.h>6 t. r* N8 R( E0 g
    #include<stdlib.h>3 l1 z/ P! V6 _/ Y3 y4 {
    : W! ~% ?6 u' b8 |  J9 C9 ^
    struct slist3 s6 E! u: X3 Y% r( n) N8 |( e/ j
      {, V' \! ^4 @. y. O9 i# d
      int data;6 F9 b" [( I/ G( c9 P
      struct slist *next;1 B2 @( }7 O9 l$ E' t# ^
      };
    2 Q6 b( f! V5 ?  P  typedef struct slist SLIST;
    / r$ I: [3 _( H* [# h% E* H
    8 C' @7 O1 ]: s$ S4 F, P6 I# c6 S5 ? SLIST *creat_slist1()6 L2 [6 i: D+ B$ r
      {
    0 u: t, c. I# A& G  int c;" m- {6 K0 l' O+ ^. m) w, g
      SLIST *h,*s,*r;  l8 @1 L  v8 @8 i
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点( ^. [* @* f  x" w
    r=h;! s8 v0 a0 |, C$ H4 s( x% W
      scanf("%d",&c);
    + H# A% l; D3 ]: S6 R8 n  while (c!=-1) //当输入的c为-1时,代表输入结束
    * H6 h" q8 {9 |% \4 Q{+ i! g1 W' U3 L
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    : _2 ~% D: [0 O0 Qs->data=c;
    " Q; a  u' m5 j- M9 i  r->next=s;- |  u! Z$ r; O2 v
      r=s;! H# c& e" o! e) ^; p, n
      scanf("%d",&c);
    ( q9 B- ]) m) W4 G; \! m  t. |2 V $ X% [8 y8 U. o: b
    }
    8 S9 o, ?: y* D; L1 c  r->next ='\0';) E- Z. Z7 `9 O6 E
      return h;
    & v' Z. e  l' \3 h1 U. p  P  }
    / n- Q5 R5 z5 o  J$ A6 C& v  T . [3 a' d/ V8 U4 C1 Q" B; A
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    1 F4 J- B, ~! B  X% h. _8 d" _  Zint printf_list(SLIST *h)9 \6 }7 _8 E  A+ N
      {+ Z' x% [5 p5 d2 p6 ]7 [
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚/ [4 Z% b* V4 C% M, n' b
    while (h->next!=0 )
    8 b5 ]. M0 l2 q, f" N  {
    ! L7 ^  u, E5 @  printf("%d\n",h->next->data );( \0 N( i- @$ Y4 W: o& R0 q8 ^
      h=h->next ;% d5 b) l  q) h5 B# @: C
      }+ \5 n" r! k! N0 j7 k
      return 1;
    $ y- W, @7 e7 l5 i2 R3 G  }
    0 ^3 Q( \$ c4 ~+ A/ m  /**/
    ( F- [0 W6 }1 c# Z) D* ^8 u5 u8 D  m void main()
    9 r* _, R4 e; b( G! r2 f1 z  { SLIST *head;
    5 s3 i: x  ^5 V
    6 Y$ w4 v, d+ whead=creat_slist1(); //调用链表建立函数,得到头结点地址. F; s% o$ m' p. S
    printf_list(head);
    / @6 g0 u1 Z( O2 z. o) _: A  }
    9 F; j, }% s( T  y
    5 r+ Y8 `) ~2 U+ R2 b9 u5 X% y9 w& z) d( ?& J+ Z
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:' [# k. q1 h* f5 b6 U) L$ G. s
    #include<stdio.h>" `8 C# x9 G% `" n/ H
    #include<stdlib.h>
    # w" J9 s! C1 P3 W* W2 rstruct slist
    / ?# S# n. U( G1 a{
    / o. R: x# v% c/ f        int data;
    5 M/ r. [2 d; W% F. X        struct slist *next;+ Z+ W9 e4 P# @7 D& C3 g; ]
    }; : t# _1 Y3 s# L" T  e$ ]; X, Z4 `! V
    typedef struct slist SLIST;
    , H0 {* {, _% _SLIST *creat_slist1()
    1 I( h4 t. [& Z6 y8 m{: H& U+ H% j' J8 I: K- o
            int c;
    3 z' R; h8 @# M$ A) t        SLIST *h,*s,*r;1 i6 {* R' ?  Z
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    % I" x4 y$ @1 ?! W        r=h;
    2 n- }, B( y+ R5 M) A        scanf("%d",&c);' P  {( [( d/ ?
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    * f+ [# _, T3 {4 I& Z        {, l/ s0 x" k6 I4 d  ~
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    5 u# q. v: V, a" i' r) P0 U/ i                s->data=c;' n  X$ j* [8 Z4 v0 {; e
                    r->next=s;
    * c/ ^' f9 s+ x7 ?- A$ W                r=s;$ r5 U. \; U# j7 y4 F
                    scanf("%d",&c);: s0 V, o4 q0 d/ A2 ^8 P; N9 O
             9 r" d5 d$ Y& y0 d# U& B2 x- _% H
            }: ]/ T8 Z; W  {% C% G2 m" n: |
            r->next ='\0';
    . V- B& D) G9 I' H0 l; F        return h;
    & b1 R; a$ t6 D}
    . |# I5 H, g6 \3 {* y
    5 T% i) e/ j4 E0 _+ ^( M/*
    4 Y) e2 M8 x3 K( c& Nprintf_list(&head)* C; w0 h' h1 @$ S  S9 V8 |4 b
    {        SLIST *h,*s,*r;* u* s% Z$ n  E
            int c;
    ) s9 f& h- T7 y: N* r6 z3 P        h=(SLIST *)malloc (sizeof(SLIST) );& ~% \$ C+ _+ R* a0 L5 W
            r=h;+ e/ L  R, w. a: O, Y9 X
            s->data=c;
    & r- w! \. d8 G/ C        //scanf("%d",&c);
    9 A/ j/ Z1 Z; g3 u        while (c!=-1)! f) g9 _7 G2 q) h; ?
            {
    & N- q! T7 {" }                printf("%d",c);
    ' j) h  n5 J0 T, p4 c' l% Y* {                s=(SLIST *)malloc(sizeof(SLIST) );
    6 X( N* U! _( h* Q) A9 M                s->data=c;
    ; h$ k$ q% q, ?8 A                r->next=s;
    7 P6 P! {5 }: \+ Q, Y' h7 ~                r=s;! _9 e, Z' y2 R7 j' b3 L
                   
    ) g7 W+ k# o& ]- A1 J           C9 {/ k" o( D1 x- R' D1 j8 [7 }- f
            }2 l* Z) a7 H! ^7 Z
            r->next ='\0';
    3 J" E/ F; t8 H  W/ @/ `3 v  ^        return h;6 p& _# I6 }# _
    }
    & I  V2 Z. H. Z$ N5 v) L*// J8 l' T; p; H  L; }/ M
    void main()
    8 x* ?+ p& J# O$ x{ SLIST *head;! M7 k1 i* u) N" Q& O6 u+ T
    + a' s" ]6 i8 @2 t/ G
    head=creat_slist1();                //调用链表建立函数,得到头结点地址2 G9 V! s+ T( r# P( n- ^* e
    printf_list(head)
      ?8 ?$ \3 L+ S  m1 p2 @/ _}
    # z  G1 _9 a1 A4 ]# ]) p- T
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    , c0 z! U& A8 L' x; F3 v) W#include<stdio.h>! P& ]- W9 P) t( `) N  d% R( F* E

    " C; j9 c( v: r4 h" n* g( Q  struct node, m6 V) i- a0 Q! b
    {
    & }5 H5 q0 C; S9 {6 @/ _( r! j        int data;& X' ], b7 q- ^) e
            struct node *next;' @* ~( q/ m7 o) F( z/ v* b
    };) G5 L1 E' W; p0 w! `
    //typedef struct node NODETYPE;6 N: Z3 c2 |7 q! m' U5 ]! |+ J
    void main()- \0 G0 @4 ^. R& \0 s
    {
    * q7 W/ |. |1 u( U        //NODETYPE; b1 q3 F( K+ q1 u
            node a,b,c,*h,*p;/ ?- m/ X/ \3 x/ n  [  p4 t
            a.data=10;b.data=20;c.data=30;
    - q8 h( I& O' k        h=&a;9 t" E# ]. S3 [6 B' @9 g: w3 t. L1 b
            a.next=&b;b.next=&c;c.next='\0';! f" v$ Y7 B" f' W) Q1 Q
            p=h;/ K% w) k: K1 v/ J- E$ j5 c7 @$ N
            while(p)5 ?' F3 n4 ^+ y" U2 b% f
            {
    9 [/ O6 U5 x! ]% D" R. T                printf("%d  ",p->data);% Z; M/ F5 }6 @! Y. h4 ^& W, w
                    p=p->next;$ `. |2 _8 X& v6 L  \
            }
    , A3 p9 P& G" F9 K* V' E% G' j        printf("\n");
    . v5 [% R8 @  U& N- M6 f4 {1 ^  J}3 j7 d5 x3 F+ O
    4 m# \, e& w) I+ b8 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 编辑 ; Q  ]% D, H/ x. Y/ b/ P$ f. C3 T  T
    % n4 y, [' V' Y8 Y- t8 I
    li2.1yong用指针:
    ( H1 |3 A! l* o, Q- s$ ]6 o
    * Q6 H) x* x5 f) t3 y6 I- D#include "stdio.h"
    + N( b, H1 _$ Y3 g#include "string.h"0 E) B* h8 A4 ]; O& P
    void Union(char *a,char *b,char *c), \7 g" P. _5 M: O* e$ l0 Y, V
    {5 y8 X) u) e2 z$ k0 ^% i
    char *p=a;3 g: g$ C+ f0 d' I2 v  \* f! H) Q
    char *q=b;  z) K3 p$ ^/ E7 M! B/ M0 v6 B
    char *r=c;7 ]# h4 m6 Y& R2 {; W7 j8 H5 ]
    while(*p) *r++=*p++;
    - v0 u# h2 C: J3 H4 ~% Np=a;
    # ]/ O3 W9 s* P3 I) ?3 l% l: Nfor(  ;*q!=0 ; q++,p=a  )1 ]4 p* w! t4 q- b, s5 j0 K
    {while(*p)/ ^7 v$ x. q: W5 _
    if(*q==*p){q++;p=a;}
    / y8 |) E+ j) Y' \4 ?% Z3 Velse p++;; p# m0 K6 c& _
    *r=*q;
    , t7 W8 w" Y1 N3 I3 T! ~4 s1 {3 Tr++;
    & z2 I% h- ]" l; ?0 |) T3 a}
    " s/ n* j- |& _* \$ P4 W. }*r=0;
    0 r9 h8 m/ Q2 v% f/ x9 Y
    ( ?. E- \. s; P  c}
    & X5 }: e+ b. v+ ~& a- M8 q4 U5 L8 W( L! q1 m( I7 B" G6 D
    int main(){; u- a# c) O  O/ p: H6 f- ~. \
    % N7 Z5 W' V/ k1 J+ g* ?9 }( m
    char a[10];5 f  W: K# y& a* _. L; K( u$ Q
    char b[10];! y  E2 L: E" j6 H- U* x7 P
    char c[20];
    & G* \) E# D5 I; igets(a);* d+ p" T! t( f2 x! d  L% d  _# C. `
    printf("输入的集合A是\n");
      \( C/ j5 f: \% l2 }' M  i, Uputs(a);6 U2 l3 a& A  y" J
    ; P' r/ D/ d8 Y1 r% U( r  x+ Y
    gets(b);
    6 z& G# \/ O8 pprintf("输入的集合B是\n");
    . {6 {8 @. U* U, z2 {& ^" ?* P' xputs(b);) ]2 d# K: V/ f! f* G) w

    ! a. @0 }$ [4 KUnion(a,b,c);
    $ x- J: u4 v$ `! ]' f, m) Gprintf("last得到集合C是\n");$ ]2 b' H, @1 h' N' q$ P+ f8 r
    puts(c);
    2 H( T$ h8 |) r5 A( Q$ `return 0;
    ' L0 T+ N8 N4 }3 V}
    * m, }% P/ u, y" ?, \# ?% Z3 m) u
    回复

    使用道具 举报

    慢跑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 y9 V; D& c$ X: o4 e) h& n/ R. q# {这个代码是用数组的、算是比较简单的。& H4 h* d* A: _7 z3 J
    & \- x  Y! `# I  v( q
    #include<stdio.h>
    & c1 f. y( _; n5 ]$ F: X3 ~int L_length(char []);
    : j9 I( ]( z2 v' L0 \int main(){' A: O( J  H. l5 w$ L
            void Union(char [],char [],char []);+ P/ P, m' W5 t2 k& ^

    " T) D/ X6 ~  `! @9 {& Y2 ^        char a[10];
    , r8 _4 w2 W2 T6 W! Y5 K& J        char b[10];
    6 i# v7 {  s+ ]        char c[20];
    8 W0 h$ j8 K+ T        gets(a);4 i3 d% i6 W$ g% Q1 A# p8 B7 J% v8 Q7 ?+ S
            printf("输入的集合A是\n");# [1 f% J# B% v2 @, Q8 {5 K5 e
            puts(a);
    ' R4 Y' D0 u# ?. O1 O5 O& ^) N
    ) i2 h$ x5 T; P' |& c9 H5 c' W$ N        gets(b);6 f, |( @" y/ f
            printf("输入的集合B是\n");
    / u) R* U) d# U: S& `        puts(b);* `3 S, |& l1 g8 U/ l
    ! [9 r+ x& k1 y" a) Y3 Y
            Union( a, b, c);) i1 X+ A* B3 M  K+ a
            printf("last得到集合C是\n");/ q5 {! K9 c) \4 e* _
            puts(c);
    + j  i! q  v+ a. M        return 0;
    ! Q0 y' K* K9 R}& r: O  y- F2 F% e3 l. I9 C9 F

    % _, N0 p9 @& B* u0 C$ }void Union(char a[],char b[],char c[])9 J- P8 |. h( v7 t# w" v" w
    {: a' K1 G( @0 h1 X
            int flag=1,t=0,i,j,m,n;
    # c2 y* H2 w* g1 M        m=L_length(b);! L2 P) N( a2 ?/ }% F' Y7 j
            n=L_length(a);
    * H# C, T8 f* f4 w8 U        for(j=0;j<n;j++)
    " p0 X/ q( e4 p, j9 ]. f0 C- Q! l        c[j]=a[j];) S$ p3 ^7 _' y& @& ~; j9 o
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;, W' v1 G5 v: o
                    {for(j=0;j<n;j++)
    & Y* U! w  ~1 f: r+ _4 Q' t3 z                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    . V% J& b' X7 ^                        if(flag) {  c[n+t]=b[i];t++        ;}
    ; ~6 h( r+ Y; v% C% F1 Q                }0 c4 j8 U# B# t; \2 [. Y
            c[n+t]='\0';
    + W) x9 N: R2 y& r
    - u5 G9 \4 O5 A* e. ]}
    ) E% e$ H! W5 G. i+ y+ j" W5 y* t8 P( G# c
    int L_length(char a[])
    ! p: g  l5 b) V. F5 f3 J{
    # A; A' V. T+ d' r8 a% N5 a        int i,t=0;;
    1 u: h5 Q1 f5 A! t        for(i=0; a[i]!='\0';i++  )
    + E( U: K1 ?! L% f4 B9 L/ K+ l- G                        t++;
      ~& }0 c& y/ {4 M# e; G  t8 f4 [. P        return t;
    ) f5 e5 G, T8 C  w" |' T} $ c& r# d1 r* W! E. `3 z
    / J: y( x& Z8 T# U$ Q6 m9 x& ~
    回复

    使用道具 举报

    慢跑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-9-3 04:08 , Processed in 0.388814 second(s), 85 queries .

    回顶部