QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2542|回复: 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 编辑
    % L. i5 i4 n: {( N4 r" m9 y( g! t" a- s5 T( f; z0 U; [
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。; j4 ^- t" i5 x
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。! h; Q* d, e  v# \" 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集合。( m/ u+ z$ S8 K6 Z$ H! ~" X) K
    这个代码是用数组的、算是比较简单的。+ U' @( A9 f  A6 a- ]; I. I

    % U4 S5 Q/ T3 Q+ W2 X#include<stdio.h>6 b5 V% U  h9 M9 n% T6 O* h* v
    int L_length(char []);
    ) |9 E8 X* ^/ |4 J! `4 X/ sint main(){
    , K+ g8 C% z9 n6 U( k5 ?2 d        void Union(char [],char [],char []);2 Q; F! V- f; R$ ?. a6 e1 F5 n% }! d% M

    ' q; {6 K9 t( Z% T        char a[10];
    & E( `5 a/ P3 d7 W6 q# D5 z        char b[10];
    , {8 k5 o: N; J! R  k# A( j0 b        char c[20];
    $ q7 H$ J+ F& l; ^# ?* i- j        gets(a);
    9 O; ~) h* q2 V6 d  E        printf("输入的集合A是\n");4 [8 Y9 ~/ d: A, j3 c
            puts(a);$ `( h) U7 a0 F$ E& S
    ! B0 D( ~6 ^7 K% L7 N: ]/ j, Y
            gets(b);- |! R8 o" v3 ~$ c
            printf("输入的集合B是\n");
    - Q* g  z; J2 j, `9 y+ _        puts(b);% ?0 _/ k/ \" I: X  n  d& g: N
    2 T. X5 U; U- B$ s
            Union( a, b, c);3 [, e* A6 g% I* i
            printf("last得到集合C是\n");/ _! G& R1 f( i8 ~" C! c
            puts(c);$ K2 Q7 A6 ~7 C4 v( H8 X) X: x
            return 0;
    ; k0 J1 {3 _9 B6 i  l0 A  ~}' r$ p  F4 X" I+ k
    * Y! c+ m4 B2 A/ Y# D0 m/ ~
    void Union(char a[],char b[],char c[])
    7 t+ |3 A* Q$ M{
    ) }6 C) i# k8 z$ A8 t        int flag=1,t=0,i,j,m,n;
    + x7 w3 M% N2 G. U/ V        m=L_length(b);8 A# J+ k7 N2 k" \
            n=L_length(a);4 x! c% A# z5 \8 f. Y' |: v
            for(j=0;j<n;j++)
    1 G" `2 U. _; b* G! I: H0 n        c[j]=a[j];
    % @. a% Q: ]2 h4 C9 E1 ]        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    * d7 R- w7 H* O% R                {for(j=0;j<n;j++)+ e. _3 x6 k/ }
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    $ q" @/ T: H; ?  s2 y4 F/ U6 E                        if(flag) {  c[n+t]=b[i];t++        ;}
    $ m0 O% o7 b* H/ g5 a- w# {2 M                }5 e5 _6 @7 @8 ]% q
            c[n+t]='\0';6 p) @4 T* p6 s4 q4 e
    % z; F, z( p4 p7 ?8 l
    }9 [$ f1 [* y1 s4 |, ~

    " p8 r$ z' S3 Jint L_length(char a[])
    $ m0 G/ q7 n0 P{8 b' E4 |* F, q4 J: o# n  Y
            int i,t=0;;# `" K8 u( t& q
            for(i=0; a[i]!='\0';i++  )& F# B0 v5 w. U
                            t++;
    / c9 T6 q' y- M3 c0 D. T        return t;, S$ S  s! A( U' h5 f
    }
    3 Y/ Z2 Q4 Y) v6 s5 h7 e2 M* ^: @, R" w, d) n
    回复

    使用道具 举报

    慢跑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 编辑
    8 }$ a' P, p# ~7 z4 K4 I
    7 W* ]- J( }: Z" \li2.1yong用指针:
    ( @  M9 a  ^) @* o5 Y) n+ Y! c# I. S! K* p& p9 W+ P
    #include "stdio.h"- M7 v- U  x1 k8 W+ r5 g: I1 h
    #include "string.h"% j4 C  q# E) o
    void Union(char *a,char *b,char *c)
    5 `( @" c" \, z' S4 E{
    8 w1 Y+ i0 q& z. S/ i+ }char *p=a;0 U! J2 i4 y$ R/ D4 g: [2 K
    char *q=b;
    4 V# ]7 q6 d+ ?& P& N. Vchar *r=c;  n& [# O! r* c- B! l7 q
    while(*p) *r++=*p++;
    * J# w) f: S5 V: {! Vp=a;3 f. Q% G& g/ G& \& @. [* v
    for(  ;*q!=0 ; q++,p=a  )
    6 c* F( J2 E. e4 ]{while(*p)
    / E" o9 `8 b3 T2 t; ?( F# ?" b2 pif(*q==*p){q++;p=a;}
    0 j* S, k# E$ F$ x* Oelse p++;
    5 u+ S: @1 g- H*r=*q;
    / U2 d4 Q# Q5 i0 ]6 D0 h* Br++;$ n  ~7 V. T7 r9 Z; ~+ W
    }
    3 e  q, D  K1 f+ i*r=0;
    7 A, V; N, y6 |! ~* v# S0 p( F. F) s
    }( Q! P* c8 Y# E6 P& N; t

    . n- H* w) o5 n& c$ i& N3 d1 w7 |int main(){
    . Y+ d, ]/ A7 [7 m" g" m2 K3 ^' `
    ; ~( e& l, m  ^" D& }char a[10];9 y- O$ j/ e! C  M% _) _
    char b[10];
    4 p$ D, r$ D3 X3 C/ |' Z, rchar c[20];
    + M9 J9 |" Y6 y9 W  m- X- b; ~gets(a);2 E* Q, U# M* s2 y& K! F$ y0 R
    printf("输入的集合A是\n");, i$ O" W- J7 v7 u3 w! W
    puts(a);- h# x7 i  F* R" c8 R2 x

    1 D$ D2 |8 W7 W9 g( [7 ygets(b);
    ' w5 C4 U8 n3 t+ e5 L- wprintf("输入的集合B是\n");1 R- _) \: A  J
    puts(b);2 ^) m" V# K: r4 g, j5 Q

    , j8 a) G' V0 @# G" I& N0 cUnion(a,b,c);% {% ^: ~* }9 {, E
    printf("last得到集合C是\n");
    * p, t. k3 \& I% R# A2 Nputs(c);
    + }# g- ?' |) p6 s) n  j" Freturn 0;8 Z, r! _2 U% w4 O' e- Q
    }2 u: L% G  N& h% g% C# f' {
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    2 n( P! l0 u$ I) l#include<stdio.h>% e9 Y. J! @: N6 ~. Q; v- b

    : O8 n1 g/ _$ Y! k7 w% o5 \" L  struct node
    . Z1 y% _! a( |' r$ W& e; i{
    : Q3 n4 _( p# @# F1 _  Z        int data;: O7 y6 b# J5 i6 a  T
            struct node *next;
    , O: V+ W5 q7 M$ E! h$ c6 c};
    * t  Q# e9 K/ I+ b4 k# F//typedef struct node NODETYPE;
    8 v! a6 V6 F3 ~( Nvoid main()
    # y6 P) q; d1 w{
    * i' {$ E) m1 O) `        //NODETYPE
      t5 V2 d- ?3 b  X- O0 j2 t        node a,b,c,*h,*p;
    $ u5 N+ E: l0 X0 |  s        a.data=10;b.data=20;c.data=30;+ K3 R5 U5 ~! }
            h=&a;% H8 W$ c( y7 {
            a.next=&b;b.next=&c;c.next='\0';1 i+ J; M  E: ?4 D: p8 d3 ~+ G$ G  Z0 M
            p=h;
    ; t% z7 ?/ Z0 g5 m& m$ R        while(p)
    ; D$ p: E3 o# j5 ^        {
    1 @9 z* F) d4 P2 p7 h) Q                printf("%d  ",p->data);
    5 B2 |( D- c0 d$ p) A1 a: @# G                p=p->next;+ Y6 S# V/ p' D# ~6 H, y  L2 v
            }
    2 X9 M- \0 G$ u        printf("\n");
    8 Q2 Y# n$ n5 _" F9 j}: o& t# I  M( i! S3 D
    + Z0 Z. ~$ {* @
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    此代码为生成一个链表的代码:
    % V% J/ _& e4 s+ V5 C9 _#include<stdio.h>  K2 u% X! v8 B  O
    #include<stdlib.h>
    & w7 j9 b0 g/ l, P( H; qstruct slist
    # s& B, H- H* I, e1 w: `{
      Q1 o- i2 f5 m1 E  r        int data;
    - k8 t4 q7 r1 }$ g        struct slist *next;: u5 ~8 V/ Z. W4 b9 T7 E
    }; 8 y7 ^1 Z0 w& s/ Q7 G: L
    typedef struct slist SLIST;
    ' n9 z( ?3 r6 {5 j5 x9 _- }SLIST *creat_slist1()
    " C, }8 Z5 y4 Z{) @  q% x: ], m
            int c;4 r/ o& |$ X9 J* u( d) L; \
            SLIST *h,*s,*r;9 z3 g2 ?6 }: g' g; m
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    0 G5 C6 V% W6 ^; R9 |' O5 A2 u        r=h;* q1 U5 |) d: T9 f1 _- W
            scanf("%d",&c);
    " d( R; J& V4 }- A' R% }        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    ' n" \, z- i9 u8 D        {3 D( Z/ F/ T% {' Y% P6 W- }
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点" }, v0 w2 [6 _% P" Q1 K/ t
                    s->data=c;. w. c# X" @0 d7 V4 S
                    r->next=s;& B+ ], o8 s  h% u! h. N8 f
                    r=s;' ]" N9 c2 O) r% K$ r
                    scanf("%d",&c);
    - u+ U' {2 ?' X) z* i; q         
    0 b4 p8 I  a) P9 O& i7 H/ a1 y: _5 z        }% B. P* ]5 V* B5 }+ G! o
            r->next ='\0';) A; d1 [. w/ R3 s+ o4 \& u) C! P
            return h;: |& _- j1 ], d, V7 _- u+ r& G
    }
    5 J; A! K! }  o  M1 r3 A, t! c" S$ @( @. w) l! g3 c# G
    /*
    % N7 V0 e6 q, L! o/ Oprintf_list(&head)9 r" Z/ n) k; E* J/ ^
    {        SLIST *h,*s,*r;& \" A5 S; Q2 @; d; R; P
            int c;# G7 `- s3 Y" a4 ~0 d: S* j  r
            h=(SLIST *)malloc (sizeof(SLIST) );
    2 z- G! t; h0 `* i2 q/ Q3 Z5 Y        r=h;
    5 h4 }1 r" a/ @$ d9 G        s->data=c;  D( |9 u* c1 x7 Q/ i3 g' ?. e
            //scanf("%d",&c);
    5 l3 D3 z" ~* t4 P6 @: g        while (c!=-1)4 \( [$ Z% |3 Z$ ^7 V9 z
            {
    1 |2 }. T' E! w$ w. w                printf("%d",c);2 x# u0 [* M+ E
                    s=(SLIST *)malloc(sizeof(SLIST) );
    2 F' c+ b' U- _! V7 k2 q                s->data=c;
    & y! ^( Q" `5 S; s                r->next=s;0 ~9 o! S; }0 E5 _, `; Q$ z
                    r=s;3 F8 F- z! `0 x, N6 y9 s. o0 p
                   
    4 ^. q  W3 ], q0 n# j% E7 D         
    & A' O. o( k$ d5 Z        }0 `$ Q* l5 f8 w, _& a
            r->next ='\0';
    3 {  k& |& m5 v) q- _, B' }* }        return h;
    2 |, O% R5 N- o: C) D/ K}1 J, v1 e, c4 q  p/ \6 c7 w3 A5 m
    */
    * r/ n' X5 t9 Z7 I2 C; _  cvoid main()
    * i5 u5 c; @) E3 _3 x! [7 s{ SLIST *head;; ?+ T0 S! v3 B5 C+ c
    - {; C& C0 S( o) z. E1 M
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    3 x) n3 k4 W" N! O8 U: _- H# u7 }printf_list(head)
    5 X7 a0 X' P2 w9 \, W, d1 z}
    : J) E6 B5 ^, z+ ]5 a
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。6 _! A7 J, F- O- T" z3 f/ @  ~
    ' p) w$ R' B1 E2 B% O2 G
    #include<stdio.h>
    / i' O" X% |$ R0 [- a' \ #include<stdlib.h>5 r# u9 o: P5 m8 P7 q

    : A7 [" U7 d" N- E3 K5 m* g, R, ~ struct slist
    % x$ I, R2 ]- {# M1 L  {
    4 s5 o' F1 |9 {8 W  int data;
    * }. Z) ^) |# B  struct slist *next;
    8 l9 P9 G8 @& ]0 X8 p  };
    " p. o6 v& j; @  typedef struct slist SLIST;1 j8 I* i* D$ |7 L+ c6 E
    , b1 s, Z) V& B* G; ~2 E( m
    SLIST *creat_slist1()
    1 d% U; E/ R5 L. ]/ y  {0 N( {+ Q: _& y: L1 }
      int c;
    ' O! N9 q( C, ?- n: X- C9 _5 o; s  SLIST *h,*s,*r;
    / y. b; @3 x, d0 P' i  t; {  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点: f% h3 y7 e, a& d( j4 l7 m; l3 O0 O
    r=h;% C+ [7 W4 u8 l* H
      scanf("%d",&c);6 {9 Q+ a+ H: i8 B# b
      while (c!=-1) //当输入的c为-1时,代表输入结束8 H& z3 E6 B$ D* F
    {3 e) P" j# r3 t7 j
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点+ \. q( k# Z  [: `" [: m
    s->data=c;
    6 b* y/ q; G( G' i  r->next=s;, z$ `, v" ]. Q6 l9 V* O
      r=s;
    ( J- G/ w# a5 q  scanf("%d",&c);9 x+ q  N: M0 J' U
    0 W2 v6 ~3 Y# U& m- l! m" K3 b/ S
    }
    2 [( N' Q9 H4 h+ r8 ]  r->next ='\0';4 y! v+ ]: r- p: h. _/ @9 z- ]  {
      return h;" }  @5 @- G' u8 G; W& B
      }
    ; h0 x0 b' M% {' A& p 4 S8 V. l5 `' F: w' H3 `$ M! }8 x
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    ( |, W6 w. w- f2 nint printf_list(SLIST *h)
    1 B9 O( p# _/ Z, q  [( v  {
      T; v9 f! m$ a% |. n  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    + I# |$ _/ S+ t. ~1 x, w% A2 ]3 ] while (h->next!=0 )2 a5 s; K; l, G0 |
      {3 ^3 N+ M3 F; `! Y0 ~1 f1 @. R( R" ^$ V
      printf("%d\n",h->next->data );, _3 [8 o, b( f# @- ?, c; C; A$ E
      h=h->next ;' S% H! i8 B$ J+ k8 ^
      }' `6 B' {$ @" D: L2 V! s2 r
      return 1;
    9 e* Y" g8 r* X& M& k! S& E/ I  }) L& m/ J" b$ G# k. P" j6 Z* W: Z3 E4 c
      /**/: O9 L, t+ f$ E5 _! X- N
    void main()! |4 H9 G: t5 s$ z4 f& W& C8 I9 g
      { SLIST *head;
    0 ]7 q3 s  z4 i+ Q" w   C: O/ q) D" P; C0 Y  F
    head=creat_slist1(); //调用链表建立函数,得到头结点地址7 t6 R2 |, w& z* \8 y
    printf_list(head);
    1 d  x6 @' I. U" ]7 H! @/ j  }
    " o* R& m: ^& s* |: A. [8 K" j& ^5 U* L9 x  _- j

    : P3 A2 T$ p4 y此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-30 08:56 , Processed in 0.604565 second(s), 90 queries .

    回顶部