QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2316|回复: 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 编辑 ( d& b. w6 S' v; ^
    . T3 H, `# _  {! a. |! D
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。9 _* A( l  d0 r" H
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。  m% A# t& `6 {& \
    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集合。# k% l" Y5 g" D" q- T0 n4 i& b4 P
    这个代码是用数组的、算是比较简单的。/ A" c# |% t8 q; |7 T3 Y: K2 d9 q
    " K/ j8 g5 E. O# U9 `& T
    #include<stdio.h>: v4 o: i/ ?+ i3 m% p0 p: @
    int L_length(char []);
    $ f+ |+ k6 u; oint main(){
    ' x8 _$ Q3 C! y) Z$ l        void Union(char [],char [],char []);
    6 d# E" G; }! L/ i" T( |1 m. n0 T) H5 `- `% G% E0 l" k7 T& T7 d, {
            char a[10];3 r( P4 z6 r4 T% s; n: N% `
            char b[10];
    , v( k( G5 j1 \6 g7 r, K        char c[20];2 X! I9 H! O8 c+ e! b7 J
            gets(a);
    : I7 @" w4 y! `! q        printf("输入的集合A是\n");' H& q5 t; |% }! y) w0 |- z  l( }5 S
            puts(a);4 P7 Z9 Y' c! S1 g8 P  d

    5 |* G3 C; t6 K& v" g: ]+ }+ U8 X        gets(b);0 V: z+ q5 @$ ~4 ^1 e. [/ ]
            printf("输入的集合B是\n");# y9 }) A# S; S5 h3 C1 E" M
            puts(b);% L% b, \) R+ O9 `: v' o- M9 Z4 m& S
    - f3 W9 U% c6 i: y# m1 p! S. `
            Union( a, b, c);. d2 h+ j* t+ b$ |1 Q- l) I! s! a
            printf("last得到集合C是\n");
    7 G$ [0 ]+ M: z2 [5 t: K8 i3 |0 y        puts(c);; n1 W! G, v2 O$ S/ k$ _; K6 K
            return 0;
    & X; ~, D  y' b1 j5 }6 W, ^% R}
    5 J* B+ R% f) h8 h! W6 q  d' m& k
    ) B; a, _$ D; M0 |void Union(char a[],char b[],char c[])
    ; c6 O& l1 C% t* o& o7 E2 P7 m{
    - ~8 |1 R2 [8 @) N( }        int flag=1,t=0,i,j,m,n;
    6 P9 P9 X1 x8 W        m=L_length(b);- S: Q3 z! g  m  c
            n=L_length(a);) i' b& ^- F8 l
            for(j=0;j<n;j++)
    * i2 c% F, o$ q3 q" W  U        c[j]=a[j];% q6 B# h( N% o' u  m
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;; E9 U2 ~/ k: a% ^8 P( f8 T( z
                    {for(j=0;j<n;j++)
    7 z1 ~/ C2 Y4 `5 W0 z7 w2 l2 u                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    2 X) S1 S$ p, K* _! l5 f' |9 l( W                        if(flag) {  c[n+t]=b[i];t++        ;}
    - J6 S/ I4 H3 s9 m, Y7 T4 S                }
    2 c, d  \+ }8 c: o; w* r        c[n+t]='\0';' j" W. `- t$ h1 F$ O$ v( D! i' b

    ! v/ r; v1 V$ v7 k7 l7 E7 J! A4 p}* b0 i8 ^9 _2 s" d/ i4 q
    1 M1 g+ w# S2 F
    int L_length(char a[])! w) f+ @$ t, d, W9 L1 T
    {. H/ T0 O: g) _7 K( P" U+ e# C
            int i,t=0;;. z2 E: F  R5 |5 O+ T3 ~, r
            for(i=0; a[i]!='\0';i++  )) {5 v0 |" Z/ E0 U
                            t++;
    0 a1 \: l: V  ~7 V; w: t% q2 ^) t        return t;
    1 X/ l3 ^" O( U* V: `: y} " L+ ]( K% V, `5 }$ M6 ]4 B

    " G9 _/ Z/ T- e0 p# s
    回复

    使用道具 举报

    慢跑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 编辑 $ K% R4 O* p5 C
    7 J- j6 \- J! i' R1 v; V
    li2.1yong用指针:
    ) ]( d/ U; \/ e+ K6 d6 u9 B2 w: d- K# J0 r: l
    #include "stdio.h") ?$ z. ?7 E# j: ^4 c- S
    #include "string.h"4 G7 O6 |" v6 e0 w; T
    void Union(char *a,char *b,char *c)
    6 N" b4 l4 ?- N. l8 j{3 j9 |! Q1 k6 o5 L! z
    char *p=a;
    / S+ t% O: ~2 {4 ]2 `3 I5 qchar *q=b;6 r: Z2 ]# q7 b7 h
    char *r=c;& C' c1 {( ^5 x, g  \
    while(*p) *r++=*p++;5 O2 V  ~" B" B! L3 H7 H. q
    p=a;" b- @+ j8 r0 I/ ^8 P2 y
    for(  ;*q!=0 ; q++,p=a  )! V2 e' n7 v; X
    {while(*p)* v+ _) A- Q) g6 I9 y' H. ~5 c
    if(*q==*p){q++;p=a;}
    ' m1 m5 m' F$ `4 eelse p++;
    " D8 H5 K4 P5 }1 S*r=*q;1 D$ N+ W1 }* w9 q" F1 b* w
    r++;5 [6 J7 ]3 G2 {- E) F- ^7 j
    }0 w: \8 o  ^' j  |7 u/ ^7 r
    *r=0;
    ; u7 I6 J0 @* z, g! R9 a7 |2 l' ?, m5 m# }$ I3 o5 j6 R  W
    }' t5 S0 E" J4 A  z  I7 P* E

    - k5 G9 @* }4 L: ~( R. Gint main(){
    , G9 T8 k+ ^3 O) l; r
    0 o4 l/ N  s" S3 p8 i3 Uchar a[10];9 \" F& s4 v1 n  u5 o% \- x
    char b[10];
      l  S! j. P1 t. p" C6 @/ F1 qchar c[20];
    2 i7 I, X6 \; g' }  T5 lgets(a);
    # W3 n6 N: F* pprintf("输入的集合A是\n");
    0 @" Z# b1 i+ ]: ]8 Yputs(a);. v8 F/ S+ z! Z0 n! v% {% k$ H

    % {: W' \; @! ?5 [gets(b);9 S. U# k% H- Q! O
    printf("输入的集合B是\n");
    ! C. Q2 y0 m0 i% j# N6 X+ [puts(b);
    5 Y0 k$ \$ c! F. J& O- I9 S' C. f% S: _. q( E/ L: l) g, w! g5 E
    Union(a,b,c);
    1 `: u( l& E6 a! I, X$ Q! ~9 Hprintf("last得到集合C是\n");
    ( n/ H2 V- _2 O. C1 v# ~1 Z. Cputs(c);
    * L- c2 E2 ]. vreturn 0;
    " {- m) P3 G; g+ R}' U+ [; H( R6 p  ^
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:' U2 X3 |4 _0 n& q
    #include<stdio.h>
    ! M3 ^* ]/ o; x8 d: N+ J
    . C" f: q/ R+ h6 w  struct node
      Z8 ~: ]6 [) t# E{3 u3 u0 K3 n' {% M0 l6 Y5 I
            int data;
    0 K2 h7 y  c2 _& |        struct node *next;* ?& k6 O2 I; A* E9 O; ?  ]7 v
    };
    % z; d4 Q9 \  ^- U# q//typedef struct node NODETYPE;3 ~7 I0 y% Q, @# P6 _( ?4 v3 M1 n
    void main()7 r' f: S+ s. W" F" a# h/ l8 Z
    {
    ( S  c6 i! S9 U        //NODETYPE
    " u% m* |+ h. S& m+ [        node a,b,c,*h,*p;$ C5 p# S* y$ Y% O8 K% @
            a.data=10;b.data=20;c.data=30;" b* I  s, T: L) d2 G
            h=&a;
    ) J7 B9 l$ Q6 j. m        a.next=&b;b.next=&c;c.next='\0';/ G1 j$ g: v! z- I8 A5 v
            p=h;' a: \% y  X' O& ?! `9 |
            while(p)5 q/ n1 p8 e+ i+ T( D
            {0 P( t; U4 q- S9 z% V, ~% V* h6 P
                    printf("%d  ",p->data);
    " ~7 z* t0 V( O                p=p->next;0 ^* S. E" w. \
            }7 a, j1 |6 P- Y4 L: I- X* Z
            printf("\n");0 y) S) Y4 L& r
    }! D9 H( b- t' ]; H7 D1 G$ \0 J
    . R( W& @  g6 K; c
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:* s4 J) D3 R6 A/ W
    #include<stdio.h>
    ; y+ e9 b, l/ @0 _#include<stdlib.h>5 e8 f+ T. Z0 W& P$ S3 V, r
    struct slist
    % g. N! U1 {- y8 Q" [6 u) o{3 \1 B, z! ]4 [$ M+ a# H7 U
            int data;' P# ^  D( x9 P+ ~" G4 `. @$ g3 C6 W
            struct slist *next;/ U$ Z( t6 D* i5 E, y" ]
    }; $ i8 g: C9 q. b& ^* y. q
    typedef struct slist SLIST;& K, b8 L  e* U/ o: `
    SLIST *creat_slist1()' J( z) _5 _% I+ v
    {/ D, i; ^* v, w6 W3 Y
            int c;
    + T3 G, i+ F6 A) b, O. E* E( a3 z        SLIST *h,*s,*r;
    $ ?& M& J. {' y7 K7 b9 k* l        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点- Y( n& A8 u. V
            r=h;2 D+ c% D+ q5 @7 G3 X1 o. J% ~
            scanf("%d",&c);
    ' }$ X% G' R1 N( d0 o        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    . Z3 P, R3 _# k/ Z, X$ o1 @4 ]        {
    " {' y. D0 J* R: i' G                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点7 g7 o2 P: F3 ~* |5 A
                    s->data=c;* G/ G' ]" v2 V4 n; o$ O, `( W% Z
                    r->next=s;% c5 c7 L& v" o/ i2 F0 \  P2 _
                    r=s;
    , ?6 N0 L6 V$ x7 |                scanf("%d",&c);# W1 M" T# w$ D  z
             
    ( U2 [, N" \" ^6 n& G        }9 h+ P6 F% ~+ S  c
            r->next ='\0';% [7 ~2 I$ r; H7 D- c' ~4 F  L
            return h;
    3 M: n, }2 s0 [% n2 I! t! l9 h- x}
    8 ]. ?( l- m% c$ A, h+ y) V8 _5 ~- j# |, K  _' `
    /*
    ! x8 |- }/ @; }2 A8 k) `2 H  c* K0 dprintf_list(&head)2 U  P/ P+ H6 L: c0 p; t
    {        SLIST *h,*s,*r;
    6 f2 u' y; t7 {3 O) R/ K2 R" g        int c;# L) x% s4 W- _  y2 k. N$ t/ H. A
            h=(SLIST *)malloc (sizeof(SLIST) );, O0 {! U. w1 E& \8 h
            r=h;+ S8 b( C# L- A* [
            s->data=c;
    1 Y- t. |3 L/ h: l0 j, m* t8 q        //scanf("%d",&c);3 S% [( r7 q* J5 ~2 A
            while (c!=-1)6 h, _, X; P% }4 u' L* N
            {+ C; q& K* D7 b' `" B& B/ w8 Z- J% g
                    printf("%d",c);( A3 T, Q5 Z% E, ], E$ H# V: ]
                    s=(SLIST *)malloc(sizeof(SLIST) );% h( f4 s8 g) ?% x5 q
                    s->data=c;2 o# a$ A  A4 t5 b% K5 p3 L
                    r->next=s;
    8 n( A/ O( f- a                r=s;
    4 @& j! i$ l$ x) A+ L- {% n2 D& j% N/ A               
    ( m5 n% v, c0 `! `% Z1 k% ?         
    & @& z' z$ b1 k" B0 J        }
    ' ?' n0 ]% c( G' j( u7 X        r->next ='\0';
    - B; _& y0 b: T4 F4 @        return h;) ]4 c1 c4 d$ j* }$ H' r8 n" J
    }5 G! }) x- r. U4 t* y
    */
      a' ~+ g3 O2 f, pvoid main()
    6 \" a; [% c# s4 A  `+ \{ SLIST *head;7 O. u8 C7 ~+ Y/ _% A2 u, l: h3 s, ^/ j
    ' b! ~6 I3 }0 z# u
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    ( d+ |4 K  c7 j9 B! T/ mprintf_list(head)
    " n5 |4 s. J, u4 ?: @$ M/ B8 B}
    ; g  E& m- \$ _# n
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。- m, f4 Q5 ]  d
    * P7 ?5 s' y$ |' g
    #include<stdio.h>/ V* b) x: x7 {* p# @* l/ B
    #include<stdlib.h>2 ?  e1 f8 W& w( s4 @* ]

    3 D& W: t1 g8 r! W/ l struct slist0 _, U7 U7 g$ j2 n
      {
    / b4 S* o  y' {$ l( _. ]  int data;( ]/ \& d6 @8 D5 A: X
      struct slist *next;$ a) A- J4 b/ _$ G2 j$ n
      };
    " l4 T/ A8 Y  A( t  typedef struct slist SLIST;
    ; Y" k8 L; ?! E' O
    - E# ^; T( F& H( P& {6 D SLIST *creat_slist1()
    9 B& G% h) M5 f! B$ D8 {8 R  {+ k! J# }: A% ~
      int c;
    $ j- D+ u# w" I6 S% x6 d  SLIST *h,*s,*r;
    2 O3 u, O0 T- v8 C' B" K  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    3 f: y  M  @; Y* t5 R9 or=h;
    7 |8 q4 U% B: v2 a0 D  J  scanf("%d",&c);
    ( A5 m. i9 b4 l7 [" I  while (c!=-1) //当输入的c为-1时,代表输入结束/ ^7 b9 p  w7 {  G
    {
    ; x( o# w. g. r1 Q6 y. s% xs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    , J9 \: @, D* R* p- S1 Rs->data=c;
    / D% x7 l. ?* o# E  r->next=s;
    1 F1 G; z$ E. p$ j! E- j9 s6 _  r=s;
    + m- Q8 E' h# V" [! d- }9 y! c  scanf("%d",&c);+ ~8 x# p! ]1 a, I: C
    : Y+ D8 o& L, y$ [8 P) `
    }
      q* i/ ]3 v, R- v  r->next ='\0';
    ' s% `; w$ q7 a9 ?5 V* z: g0 K) W  return h;* b3 T  I7 M% B8 x
      }
    - e/ l; O. _: w/ T# u* T8 R/ m 7 \% G2 M( g" m  N
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    ' O2 \0 T- v7 ^- Wint printf_list(SLIST *h)2 S7 h3 ]) k( y1 V' g- L6 w( p# b
      {* n4 e/ b; m" w6 `( s4 N* m
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚+ D: o/ n; p7 m3 _# V7 L4 J
    while (h->next!=0 )
    5 k3 t5 a  _5 u  {
    " o2 R) U5 n$ C8 r  printf("%d\n",h->next->data );- @, f8 b9 y% l
      h=h->next ;
    1 Y5 w! u/ i: {3 z  }
    ) g7 a4 ^0 x+ e7 ?* j  return 1;
    $ I% R$ u' p9 K) T  }
    7 Y# O' C" l) v: S$ b  /**/
    0 M  M2 Z8 R, r% I2 Q void main()9 o$ l( U9 _+ V0 r5 D
      { SLIST *head;
    # Y# F# m: b" W5 V * d  h0 f) L2 f. S
    head=creat_slist1(); //调用链表建立函数,得到头结点地址' E. o" X2 L6 e- C0 n- E0 w: x' \1 ^7 ]
    printf_list(head);8 C8 m) K9 Z, W8 H. [9 \# Q
      }4 q. W7 {  ]8 H; h- v
    8 r8 w3 b( U; n! @2 Y
    9 t% T+ K" e( s3 t
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-17 11:06 , Processed in 0.431175 second(s), 82 queries .

    回顶部