QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2106|回复: 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 编辑 8 a8 {* V0 A  e6 n5 p+ f* B% i" ?% e
    4 h+ s/ Y' B4 w  p
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。/ ?: H/ i5 V* x, E& U
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。, N. G1 S; u* n' p0 h9 b
    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集合。$ m" a( \$ N7 U& A* d% e
    这个代码是用数组的、算是比较简单的。( Y3 z. e0 S, ?7 d+ v( U: T4 p( D

    ! w+ L+ T1 A( K: B9 U#include<stdio.h>
    $ I/ J/ a" |0 B* h  l4 E3 Cint L_length(char []);3 j- Z( l8 Q3 K0 s" f) W; R0 m0 [. i
    int main(){
    ! f6 L, W. L& ~        void Union(char [],char [],char []);* f- X3 E  J2 `% o/ e, O

    / ?# A) M0 |1 e. [# k7 e        char a[10];
    ; W: \# Y- O& x* r        char b[10];& k9 A+ _- B# J5 Y3 `
            char c[20];
    8 h# X6 P$ {( h9 ^0 q; Q) G# w2 F        gets(a);) I/ q! @% {; }
            printf("输入的集合A是\n");
    8 i4 }; q! L+ V! T" X2 x        puts(a);
    " m5 J! t) F8 d; k " Z& t' _4 f. m$ V- r
            gets(b);
    - L, y2 ~3 g, Z% O  K* ^: H/ F6 `        printf("输入的集合B是\n");
    + N' J- O) W6 }3 ^" t        puts(b);. Z* x# A* ?* S+ N5 G# P

    $ c- W4 ^4 j$ t( i( p3 G" |8 z, P  _        Union( a, b, c);
    6 W8 F7 s# `, K        printf("last得到集合C是\n");: E: V% R0 Z1 z4 `) `
            puts(c);- t, j9 z% x9 c: V) g; c
            return 0;
    + d! h! R7 F; c! m}
    , i9 X8 r4 C( w0 b2 z, f' i
    3 ^4 H! n, s; \3 }1 E; uvoid Union(char a[],char b[],char c[])/ Z1 w: F7 v! ?( M9 `$ _  j- @
    {
    , a( w( K: v/ f2 c$ y        int flag=1,t=0,i,j,m,n;
      W5 W: r; Q# R- D        m=L_length(b);) ~! X* S% H: u  Y: `% z3 X( X4 Y
            n=L_length(a);* L+ K8 d3 v( S: W
            for(j=0;j<n;j++)
    " I% V+ Y) C' C8 v: v* a        c[j]=a[j];5 U5 v8 O/ R, V2 I
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;6 w' M% u. @# e2 S% ~+ Y5 W/ e
                    {for(j=0;j<n;j++); L! q2 J% a* W* D9 I
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    ! U. A' F0 T6 ^3 m1 B. f) u                        if(flag) {  c[n+t]=b[i];t++        ;}
    3 W( O6 P) Y& x. [, R$ ^                }5 @8 l5 V3 ~) o2 A
            c[n+t]='\0';
    , x  r* i0 L7 I$ Z, s2 u
    - Y, ]6 M* C; s6 m) A) w}. v* t( f& i  E/ f" Z+ z% d
    1 i! U. F! N: ?! }! j8 C+ l
    int L_length(char a[])
    6 J4 b. P$ r# }5 z{7 Y6 j0 n3 z4 W. `  @1 v0 z  k
            int i,t=0;;8 _* |2 r; r! ]0 z& I
            for(i=0; a[i]!='\0';i++  )  v' A2 |2 u$ u0 Y
                            t++;9 x; P' r0 x+ S& g7 u' L% m( D
            return t;! u: S/ e- r8 G. u
    }   X0 ~$ N. D7 C* [

    " t; x) Q" D3 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 编辑
    * s! d4 \) [" {! x- s6 e: D$ p5 v$ c3 n. X1 Z
    li2.1yong用指针:
    4 A5 [" u7 i  k. J3 x3 x/ W8 f6 d& t2 A$ s- I. p5 i
    #include "stdio.h"+ Y2 B6 W+ C# J: `# A6 w
    #include "string.h"
    * V3 k  L/ k  [6 n. d0 _) Evoid Union(char *a,char *b,char *c)5 J$ A- d2 _, _4 M9 X; c
    {
    9 ~  |+ y0 M  T( T. Z! O9 r7 lchar *p=a;
    / i6 B2 G/ b8 A( @4 Zchar *q=b;, i( b2 ?- ?8 b: ]) m* A, \
    char *r=c;
    . [7 O: m8 x+ Uwhile(*p) *r++=*p++;: k# o# T" p9 n( X
    p=a;
    , x& J+ m1 j  n/ {" W" H$ ?for(  ;*q!=0 ; q++,p=a  )
    ) A2 T' D) a$ {{while(*p)
    ' D" L/ |& V6 u/ n& j& f, l, Qif(*q==*p){q++;p=a;}
    1 t, A  ^8 _5 X/ W0 celse p++;/ d, x0 X. |$ J4 d
    *r=*q;- C/ n; ~4 t- x- m
    r++;" Q/ m0 M8 M; x) t7 H
    }, e* |% L7 W' h$ }: D7 w% u
    *r=0;2 }; T0 G4 W8 o( `7 D

    # ~& ?7 s7 [7 Q& ^, a# I4 r}$ C( T# ?9 S  ~3 g2 g

    ) _& |4 e# l1 Z) }" a: tint main(){  [; F* Y9 _& u# p& r

    ' {( z+ t* P3 x! xchar a[10];
    & S' R+ O4 r2 ?& ochar b[10];: g/ B8 G$ t. v5 z" Q% J
    char c[20];( e9 ^3 Q0 x4 V
    gets(a);
    / Y2 l' K- v' u# H- }" j8 }printf("输入的集合A是\n");: B# m3 Q# R% j
    puts(a);, H  _' W8 [6 e) J. p* d* }

    . T  M5 _3 u* d+ ~" mgets(b);7 ?: W, f* z* q9 S# [2 I+ O
    printf("输入的集合B是\n");
    ) M, k0 ^; k# Z3 O4 mputs(b);
    ( U  ?: A; w# I) N4 q8 X. F, R' S: h7 A2 Q% s8 j
    Union(a,b,c);. S0 v. E9 Q! }4 z
    printf("last得到集合C是\n");) R1 Y; [/ e' z* x0 B' @1 t& t
    puts(c);
    ' B  w$ c: r( L* z' `- c+ n' Qreturn 0;, W6 \) G6 P7 p" f2 N
    }0 \& W8 o% N+ m3 K& j, `, R) d6 n/ X- S
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    ( E; U) v/ Q( s: W# }3 b  k#include<stdio.h>6 i- o+ W# B: q" ~( q3 D, v

    6 y$ ?9 E/ w& r, ~  struct node% h" l- I1 d. j# ~$ ]
    {
    8 U1 D6 y  R' Y3 a/ @1 e) ^5 k) U        int data;
    9 M7 m  C9 T. Y        struct node *next;
    9 j3 J! M8 d  `7 d; J2 Q- x};. }2 W! L5 T. S" H- I
    //typedef struct node NODETYPE;: x1 ~; g) I! o; |9 H, `
    void main()) l' e1 L7 E  u
    {
    + t' q/ s3 a  `, B- g. U3 s# ?. v        //NODETYPE
    ; s6 {0 D' v  `/ w5 F  _* c; {        node a,b,c,*h,*p;
    9 V% }7 K6 a; N2 X& Q) b        a.data=10;b.data=20;c.data=30;
    3 L/ ]( j/ g- D) Q; j! O2 Y) s        h=&a;  @+ \( M) b( R0 w4 |) o& d
            a.next=&b;b.next=&c;c.next='\0';5 }0 X- H! w1 v
            p=h;4 p+ s! F) f0 h, |3 v2 k4 l( U/ ^2 R
            while(p)  l9 N) w' S, O. ^7 p8 c; y$ h
            {6 y  q) V) ]8 ~! l0 R
                    printf("%d  ",p->data);0 H# u* |! X; x0 x6 A( F5 ~
                    p=p->next;
    1 U3 |! ~. T5 S. w        }
    , _4 [8 v+ T; K0 @4 B        printf("\n");$ ~/ M8 ]; D; R) U% o
    }9 M5 x! M+ x5 [$ D% ^" _: J

    ; `/ v9 B. q* @这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    - z. C* b" D, G% q& V+ l#include<stdio.h>
    1 k! X( z1 ^) N4 C+ v5 o/ D#include<stdlib.h>8 L6 T9 ]% G% B6 L3 K
    struct slist
      Y5 r; d, s  E" E{, `6 b& X: r7 I, l# ]3 {4 \
            int data;; W# @) C! \1 o* r/ ]3 H9 s
            struct slist *next;$ b' H  B) X& T1 k6 {
    }; ( O. c. Z2 a: _7 a: y
    typedef struct slist SLIST;
    . R: t) Z) z8 ]  p/ ESLIST *creat_slist1(). U2 m% X) @9 k4 _) g
    {: z; t4 y4 s/ J) F- h& F' x& r
            int c;
    * x9 |4 S) ]# x8 k        SLIST *h,*s,*r;
    , N% W% a7 M+ d6 x/ Z5 Y        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点1 M; A. L! D2 l! M- D# `8 m) W& ^
            r=h;
    ( K! U, t; }9 r& r& h& w        scanf("%d",&c);
    ' Q0 h/ Y. w0 K& I        while (c!=-1)                                        //当输入的c为-1时,代表输入结束  i8 j7 \0 K9 P/ P7 [+ y. ~
            {& S# G: Y4 y+ v3 k' J# E/ Q9 r4 i
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    # ?2 B3 m3 ?, C% A7 u; n                s->data=c;' f9 ?: d) K9 P. N. d2 {$ \- G" X
                    r->next=s;" O2 G7 z9 f! [, V
                    r=s;5 [& d4 D. z- n; w
                    scanf("%d",&c);
    2 |1 U# L9 _5 G& k. `/ D6 P         
    + O% Z- i2 {  g. e% x        }$ s$ m9 I1 P) t2 D" k; W
            r->next ='\0';) p, t: g' ]' j' D: G: [
            return h;# ], o3 ~, c, ?! g
    }3 W0 W' Z0 ]# T2 u' ^) w

    + D, k' Q. w, q/*
    3 w& G- _4 g; C$ U4 f5 pprintf_list(&head)
    6 l- U: c9 N: h$ d{        SLIST *h,*s,*r;
    8 ~, v8 A+ a1 ^: J/ S4 |        int c;
    9 Y4 N; j: e2 r9 K& p) W' J- [4 c' g        h=(SLIST *)malloc (sizeof(SLIST) );
    & X2 S2 X; W# E* R2 b9 H" u* O3 u1 o( P2 ]        r=h;' ^6 b' k3 C' ~: E& C0 g
            s->data=c;+ D" z3 D* _/ t: ]# b2 s
            //scanf("%d",&c);/ t2 f" D' z% o3 i5 E% A7 v) h6 l
            while (c!=-1)$ X5 {6 t8 G6 q% K) u$ ]. V
            {
    - U+ F  E/ S3 U                printf("%d",c);
    & j& I4 u7 L. @8 ^5 c) A' D) M                s=(SLIST *)malloc(sizeof(SLIST) );
    8 j2 e; |; ?& n4 {7 C/ r5 ^: j3 f                s->data=c;
      \9 x' A' _/ D( o6 p  s  ]                r->next=s;: B& _/ H1 V) q) T
                    r=s;
      T" p! N+ D8 ], m& b               
    $ l( d, ]+ _5 m: Y         
    2 V( d. t% {2 t0 g$ O7 p' y, l# J        }/ r8 k7 T: d- H4 B2 Q
            r->next ='\0';7 V6 L/ a, E2 Y; o7 a; g- W
            return h;0 X, D. d4 m5 M' S% o- q, D' c; e
    }
    6 Z* a) ]5 Z/ N+ A# R2 Q*/+ V% l  m( }- ]6 w6 N* v# a9 y; p
    void main()
    - `3 A( I* H; Y/ f4 D{ SLIST *head;; l. w: e1 E2 N9 v
    + d' F/ J! c4 k5 o
    head=creat_slist1();                //调用链表建立函数,得到头结点地址, Q  ?+ N) L. o2 j8 K
    printf_list(head)
    / f) ?1 ]; }( J+ O+ E}+ D! H! d& B# U6 w5 b
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    ( _/ C7 w/ _  w) X* u" C/ S2 O5 |+ z, u% ?$ D, z% f9 S7 X7 H
    #include<stdio.h>. j  a$ `+ b" c. C7 r
    #include<stdlib.h>
    9 w5 M9 k* r& L1 C4 D8 E. U
    7 R2 L( B' U5 N) Q9 F3 T9 k struct slist
    . T/ |2 @7 y) R5 x- ~1 b3 Q  {) \' l8 i. g( @' e
      int data;
    5 M7 l" D8 X: S2 |( w  struct slist *next;
    # U" Q* c/ e. O' u& b: Y: p* ~2 Y2 Z  };- B& L! T8 a; p6 ^2 n, N9 A8 N5 a% |8 w
      typedef struct slist SLIST;
    % K  K& z$ \2 ^% C # F% Y- t; P  h0 A+ ?
    SLIST *creat_slist1()2 O  L5 p' p4 |, ~
      {, x( u: Q9 I; O/ ^3 I
      int c;! Y" y1 V5 u8 C2 N! k
      SLIST *h,*s,*r;4 l& q/ T) Y3 f4 w. T
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    4 |) _& @* j7 T& x: \0 o$ w  xr=h;
    & ?# V1 ~( ]) X  scanf("%d",&c);
    ; q9 r! c; f6 N  while (c!=-1) //当输入的c为-1时,代表输入结束0 L& m4 j& n3 p! @# e- D6 \5 E: M
    {
    $ _& ]. i$ C1 os=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    & o" k6 P6 g7 O+ ?% l# Os->data=c;5 O2 M. R- E, ^+ i4 _6 V, W$ s
      r->next=s;
    7 n, H7 N1 m  }  r=s;6 `) J; i$ H+ H( V% V) H' g0 C% o
      scanf("%d",&c);
    ( g  T- y$ m; O " O$ n# f" z! v, R5 C# G( ~0 `+ V
    }% o- [7 c. x+ o, }( E) L6 b% [) W
      r->next ='\0';
    + o5 ?" j3 e; J; d9 b' s4 u3 B6 d. g  return h;
    / u$ ?" k3 [! a. i6 o! O7 M  }
    4 b) f: |! Y3 L4 Y( Z; W2 r 0 s  K+ v, X5 T! b; T
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?6 F9 Z9 J: j$ e3 p6 N* j) C! O! m
    int printf_list(SLIST *h)
    8 ~" Z/ c. e, }9 [) O6 X  {5 A* n2 d7 {% j
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚- G5 ^3 k! G; f0 t9 C
    while (h->next!=0 )
    : t8 w/ E+ N  \* @  {- A1 \8 I6 H9 A1 k; a3 ^3 M4 A% G
      printf("%d\n",h->next->data );
    ! G! h, g! N9 x0 U' |7 `1 G  h=h->next ;
    4 v3 d: S, x# \& z! i, ^  }+ u. D0 }1 F- E+ t0 M& w
      return 1;; t# q# E, O$ J
      }
    4 w; H1 J$ f$ P5 L7 H, y! t7 X  /**/
    9 ^5 P) n8 j" \) ~ void main()1 r! L* V8 K  w5 }
      { SLIST *head;
    * T- Q: W. Z) \! K; } ( s3 e+ C: P  G) l; p. R0 S
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    ( P' N: J$ K6 `7 ~7 Uprintf_list(head);
    % i1 l; {& L% J  D0 ^3 p" Y; x  }# k+ V9 t3 \, n1 w' X4 G+ J. X
    : m: K  R6 |( r. ]7 y9 j

    4 O7 c/ q6 ]' Y  g9 n: j' T/ r此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-7-23 03:17 , Processed in 0.502577 second(s), 82 queries .

    回顶部