QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2004|回复: 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 编辑 ) d+ H/ V' g* q0 w: N

    1 l/ g- A6 \4 Z1 I计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。- B) T* E6 ?  s0 a* C
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    8 a+ B  o5 i# [& |% j& s& Z
    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集合。
    7 s6 B' J! ~* N$ X这个代码是用数组的、算是比较简单的。
    ' i$ `8 n+ A" S9 z7 m9 w1 N7 o5 p  J& x* v: P
    #include<stdio.h>/ Y/ O6 b+ f  l
    int L_length(char []);; f" q) x! t9 \. C/ x; }/ [
    int main(){
    ( u# I$ o4 k) y# ~, E        void Union(char [],char [],char []);
    $ k7 o/ m- r0 @/ t+ T) X" \
    : _6 G: n& ~4 G; O5 f" m        char a[10];
    ) u# ]! U$ j; M& k        char b[10];
    / ~, A8 M3 V9 ~        char c[20];0 v" ]/ j/ Q3 s/ u2 l0 m4 K% y% f6 E) E
            gets(a);8 e  |& i- M* ], ]8 \) C/ ^) G
            printf("输入的集合A是\n");" m" X5 Q% U+ H3 B$ K0 Q. N
            puts(a);
    3 x4 V* S$ z: S9 m& i% v: E" ` / ~6 {% Q' L  A0 S# ^
            gets(b);
    * T9 o1 j0 Q) ~2 v" w        printf("输入的集合B是\n");
    : o% ?; [/ |" k9 Z5 M& E- C# Z) s        puts(b);
    ( ?$ w/ Z- f6 a- a" D+ `7 K0 H* x4 `. i
            Union( a, b, c);; `  z4 m- \& }
            printf("last得到集合C是\n");! L! k% \6 v% P; r; q. L& X
            puts(c);
    ' c. W  l& y! K) M' _" G0 W        return 0;
    2 Y* K% G2 C2 G3 T) o. ?}
    : G$ Y! U# o! M* P" T" z: v
    5 J  y. z1 t' ~  l; dvoid Union(char a[],char b[],char c[])
    9 d7 a3 W/ O) B{: v$ O" N1 W* m5 G5 \
            int flag=1,t=0,i,j,m,n;. Q7 b0 W- m% h2 g1 G1 m
            m=L_length(b);
    % S. F" C8 ?0 Z/ H, K        n=L_length(a);
    5 V; c2 A" d, Y4 L        for(j=0;j<n;j++), z; L3 S1 ~- e. S9 d
            c[j]=a[j];2 i/ x" q1 P+ I2 Y  v3 t8 \
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    # ?0 N. Z! h4 S* A" y& o, J  w                {for(j=0;j<n;j++)
    2 W( b  @  ?# X5 H  i: z, p% ]                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了5 }6 }5 E3 _7 K3 s/ f6 J- K- c: T* t
                            if(flag) {  c[n+t]=b[i];t++        ;}
    4 s4 d* G1 I+ E* w; R                }* K7 k) z) I' U; T: ?
            c[n+t]='\0';
    : I1 Z% g5 e( w8 j; N" K; n1 ?
    ; n" V4 ^: G* O% {}3 _8 v- D! Y3 ^& k/ T0 E2 [
    7 X2 d* ?" m9 f: _3 Y
    int L_length(char a[])6 j/ Y; z+ v0 v% G2 i7 o# C
    {
    6 q1 o  t% S0 I! f3 y        int i,t=0;;9 G, ]  U* U( D" e7 D9 {  d
            for(i=0; a[i]!='\0';i++  )* @9 e# E- f& Y" q! S
                            t++;. b2 U- }1 }" W2 o( R! q3 H. @
            return t;+ m9 N5 i. h; ~& J& u5 |& E
    }
    , g. `' m. K4 T5 `2 e& ^
    $ }2 z- W( ^( N# s, E# Z/ I: 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 编辑 ( p+ e: i+ g3 D, D, s$ {

      ~# G+ H9 n% y/ {$ ali2.1yong用指针:
    ! P. o8 j! M; \  o" j5 `. s3 e) k4 t& D* s3 X; X; w2 I* M
    #include "stdio.h"; n) W5 W8 A) j' v8 H& L/ {2 F! G
    #include "string.h"
    ! h1 I' ]( _4 J6 ?" k0 r# s8 ]void Union(char *a,char *b,char *c)
    " I/ j( b# N) q2 Z) u{, e% P0 B7 Y( R5 p
    char *p=a;
    4 _3 T& L. x; C  k$ A" C& e" `char *q=b;- |) e; f, n/ i& O. ?9 N& h
    char *r=c;! {3 L; J* i* p' j
    while(*p) *r++=*p++;  b: ?) f4 W9 \5 R
    p=a;, m# g2 l+ v' S% z" Y5 E6 h* P/ b
    for(  ;*q!=0 ; q++,p=a  )
    - U8 J/ O+ J1 b/ T% ?8 M: @- K{while(*p)
    + I; a4 k7 m# _: F0 f5 K, }if(*q==*p){q++;p=a;}9 M8 I( J( F5 K
    else p++;
    5 a2 |8 W2 D% P% e& y*r=*q;3 E2 t' s6 |$ m
    r++;
    ! C0 p9 d" H5 f}1 D% x3 D0 X& l# q, C- {1 O! l8 s
    *r=0;
    5 h$ O0 m; H, t) S
    8 v% o) d( j: D}
    5 S& x$ u/ c1 C+ h; q6 u' n- }$ R/ v- h
    int main(){
    # r  U9 P' K3 W" |2 ^% A2 p( e. {+ d8 a: g- v( T, d) g
    char a[10];$ ^, }+ b% u% W( X+ ?7 E+ C
    char b[10];' x4 B& r8 `% m9 I. {& }
    char c[20];
    8 [1 ~5 P- P7 F: N: Jgets(a);
    ; l, j6 v- y5 D& Oprintf("输入的集合A是\n");2 T. A, P1 x- @
    puts(a);
    9 o4 D# Z' q* t  n1 \4 ]4 O# L. R  |# _0 L% M, A
    gets(b);- Z! ^2 u6 h' p6 D5 Y" w1 X: m- ~- G
    printf("输入的集合B是\n");
    / P) q1 ~; S4 q6 S/ U. m* u* E( kputs(b);" Z) J6 C9 p5 _& H6 w& B4 w

    9 m6 t* O0 j5 f* }Union(a,b,c);+ M1 k% V- T5 \
    printf("last得到集合C是\n");
    & s+ A/ x8 C) l- a/ v) R# pputs(c);
    2 H( G, {. n( Ureturn 0;
    1 I0 e7 M) J$ `* ~9 i; I3 a7 z* q2 d}- R! O8 _0 P! Z) L
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:8 Q3 {5 k) c3 u- N
    #include<stdio.h>
    * ~2 t) X4 ?0 G* g  r' s
    2 N* h0 y2 n. w4 N  struct node
    % g) }2 C3 M7 v. \" F{9 A% _8 M# l* C9 M% M6 F- o
            int data;$ r; K4 c7 M! j4 b  s
            struct node *next;
    3 s5 F8 E* s( E% O8 i: m" C7 ~* H};4 y% K8 x% T8 Y6 b3 M$ ~$ F+ A
    //typedef struct node NODETYPE;
    & O& l! n" l, ?+ Gvoid main()
    8 T% S6 D+ L" {  e: g4 ^' a{% v6 ]; l) t" p7 M
            //NODETYPE
    4 h, o0 G' v5 m) U4 H/ u1 X' W        node a,b,c,*h,*p;6 ^: N" M7 l8 }# R
            a.data=10;b.data=20;c.data=30;
    . `7 {! U/ ?" K  V8 p! h- K        h=&a;0 ]6 H  z' f  O, E7 C9 M1 P
            a.next=&b;b.next=&c;c.next='\0';
    ! F8 V; X* a- z1 e        p=h;9 L; H6 J( L: _& M' X, w
            while(p)& ?( V6 v9 `. e
            {
    ' w/ z& ]- Y4 @! n9 L9 B! ~2 z; [                printf("%d  ",p->data);
    2 j( m; H0 r' F" j4 e& d                p=p->next;& e# {1 p! Q0 l- b
            }+ A9 z$ h6 G7 Z8 x
            printf("\n");, P1 b1 ~# [  [- L! Y
    }
    ' q: b" j- |4 T. Z. d  d
    / ~3 l. F+ g% @1 P4 k2 M这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    ! Y1 D' O+ m. [, [" N$ D#include<stdio.h>  E, o8 m! v4 f5 Z
    #include<stdlib.h>
    ; J8 ?( V' i1 ^4 G; |, d, ?struct slist
    5 ]+ ?; E+ B& ?( j" \{" n, r6 Q- \3 ~1 I3 p% e
            int data;
    9 Z& n7 H% `. U. `        struct slist *next;  J) N$ V% ?3 d" U; {& K9 W# C  w
    };
    ! b' x3 q' H% O5 c3 z5 _typedef struct slist SLIST;
    $ m( |' U6 k5 E! D8 q! HSLIST *creat_slist1()# u5 ?0 j. G. u1 K$ n2 H
    {9 B1 _3 W8 v( J  {
            int c;/ C  a8 J1 l9 ?  \% m- J
            SLIST *h,*s,*r;
    + Q5 x3 v0 i/ R+ i" A+ q        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点! B! V. Y! v3 h& g2 U! Y
            r=h;: v3 R. B  P6 x3 \& e: Y
            scanf("%d",&c);' J7 H* h% t2 T* w  Z0 [
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束. i0 c/ c7 ?: N2 ?  ?0 Q1 o
            {8 m. f. {. O8 Z; l2 {
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    , K$ l! a) z3 ?                s->data=c;. g& M8 S4 f. C% _- v
                    r->next=s;$ h# e) D( [' N5 ~4 o) E
                    r=s;0 K4 I$ I' ~% n$ |. R- [( A" i# d+ I
                    scanf("%d",&c);
      I. z: j1 m# K$ B) \         4 P8 k% n. y5 W* j  B) W- M
            }
    0 n: D8 s5 L$ C! N! Q7 R        r->next ='\0';3 ~  `0 ~' q5 v
            return h;
    ! z: _1 o1 a& J2 h7 I+ ~/ P}
    * t, D- _- K2 U( b+ [0 c: H: D3 ?7 ^7 `, n7 c# `" [- ]
    /*
    ( f+ p$ _" w- O; R0 Q9 w# ~4 Vprintf_list(&head)+ |" p; r- _3 x3 ]' m
    {        SLIST *h,*s,*r;5 I- _+ y0 p! h8 o6 m9 u
            int c;( y) Q7 K! ]6 I) t, o
            h=(SLIST *)malloc (sizeof(SLIST) );
    $ r& Y( u1 }9 ?: Z* \1 w4 M3 Z        r=h;
    - v5 r6 |. W' e. Y. |, ^2 K        s->data=c;7 A$ e7 t7 C5 L& F  l
            //scanf("%d",&c);
    8 A! w* e5 ]1 s        while (c!=-1)
    8 J1 z" ^- D; V        {5 Q' }4 A$ L2 _
                    printf("%d",c);
    0 U& L) ?9 t% F/ {& z& a                s=(SLIST *)malloc(sizeof(SLIST) );2 I; n1 D7 m, Z  G5 _* M
                    s->data=c;! Q0 f! Z' j' N4 f: I
                    r->next=s;+ u9 G$ |9 i  [+ A- V
                    r=s;
    ; j3 D$ Q  F9 U4 H7 g  i                ( A7 h. _" u$ Y# w3 \, z, }+ U: `2 I
             3 H- c3 D5 \. C
            }
    . V: D- Q+ E* f: I4 v* J1 Z        r->next ='\0';
    " I/ |& _/ ^/ K8 Y- S        return h;
    1 y! o. q6 u! u% T# B% c+ T) R: |}0 j6 h( [7 Q& z+ H8 T; p. v2 D; k
    */3 O* C. I+ F; ]7 r) _/ Z5 K; G( _
    void main()
    5 @, J' P( f$ C' n6 M{ SLIST *head;$ g3 [$ `1 C: P* G0 Z
    / }0 I7 c+ H# d
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    , m" s1 V* ^2 o& F7 V/ hprintf_list(head)
    ( r; z' Z' j2 `0 ]5 _/ r}
    + E. x' M2 u- t0 l. F) g+ f
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    + l& A' Z( b3 z: x7 j0 Z. Y0 q9 t: H0 `5 }
    #include<stdio.h>
    1 |0 L4 y8 B# g5 D# M2 { #include<stdlib.h>
      n+ w% |8 C0 _
    3 H3 W+ z/ i9 f! ? struct slist( V  k6 G8 L( b$ V
      {
    0 F- B1 {( m8 t/ y  int data;
    " }4 a' b* t, @- `$ s  struct slist *next;
    " X7 N% ^4 I, M  L. w. i# ]2 y  M6 J( l  };
    , J! `' k- K4 c# t  typedef struct slist SLIST;( w9 d  m! E! T2 u3 \

    9 H1 p4 m3 c, H SLIST *creat_slist1()
    % C+ q7 ~, }, e5 d9 H# `  {
    . Z; A8 ]% E5 `8 ?  int c;$ p, ?+ c1 Q2 g4 d2 x
      SLIST *h,*s,*r;3 B4 j7 p: D& }3 s( ~$ @
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    8 ^  ], L  ?( \; tr=h;, t, h$ K8 A* D9 e' g5 [
      scanf("%d",&c);5 L: g3 n9 R. n6 I3 ^
      while (c!=-1) //当输入的c为-1时,代表输入结束
    . N% d) b6 _6 L( I( O2 g{
    6 {* C1 x2 x  q- U1 Es=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点3 p+ U* Z- |7 Q9 P3 w
    s->data=c;
    % @! r. [4 E+ H: f7 v5 l  r->next=s;+ B8 n( F9 w& z8 y) o
      r=s;; D: V* i$ m; P. `$ `3 F% d- h
      scanf("%d",&c);
    ; \9 K& @$ B! W9 _5 d# t - p% `$ a( _% y+ l3 M: X
    }
    5 S3 `$ y& W* E. t  r->next ='\0';
    ' I5 R; l+ o4 r0 Z7 V4 O  return h;
    ( x( R( @3 g( I" {; m  }
    & Q; M: l* T$ H) u2 g8 R
    0 y0 w% j1 C  {; n/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
      l2 F3 X/ B' f$ ]  X0 gint printf_list(SLIST *h); p  R" Z  o6 N  N- h
      {1 v5 j' K: G+ U  K  R1 ?# a+ t
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    ! p3 {& k7 f% E: v$ f while (h->next!=0 )3 S$ p4 v& ~) ]
      {
    ) }& z# y4 D% B  ]. i+ B6 @9 H9 ?  printf("%d\n",h->next->data );
    2 U7 f8 k9 B) o  h=h->next ;3 t# f# c% ^3 x  m1 O! c; E
      }
    # m. g  R9 a: v$ Y) u$ P  return 1;
    ' t/ m/ |. `  E$ B2 p  }
    8 n" k2 B" L4 u; S  /**/
    6 ^% K6 s- r6 k* Z% H void main()3 ]+ j* a; S) ^6 O8 }3 K0 N8 L( U; P
      { SLIST *head;7 R$ o: n  R  Q( |% v0 T+ B. k
    2 O" Y+ Z8 p+ N4 B  q; g0 o
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    + O5 I/ A# L/ @  ?* M; M# s3 i, Aprintf_list(head);' H2 a! {+ ?* Y" ^" K0 m+ U7 ^
      }: l- O# Z( S9 W/ P( a' }
    % e6 b5 _( H& U! m$ J$ H  V

    # e" `) F1 p2 q0 H  p此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    8#
    无效楼层,该帖已经被删除
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-5-10 08:42 , Processed in 0.751039 second(s), 89 queries .

    回顶部