QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2303|回复: 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 编辑
    ' E# y4 N6 S- i* ~: S& ]5 r
    8 |6 ?* e0 J8 {计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。  o1 w# x- M: T  z
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。- L( c9 x6 Q1 w4 l$ U
    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集合。' Y2 L5 ^& ]4 d! y
    这个代码是用数组的、算是比较简单的。
    , m( A) A" {( V7 }. F/ V. {# h, g4 C7 \) J0 K7 a8 h
    #include<stdio.h>
    , A3 d# _/ n. eint L_length(char []);
    . V. u0 H( d  r( M* ~int main(){5 n  i5 i1 [+ q/ \. z5 R% j
            void Union(char [],char [],char []);! e6 v0 M- Q7 R4 j1 G  }
      }- o3 E2 W/ d; ]' H
            char a[10];" x: E( o8 k1 [/ a7 a' u7 v! \: I
            char b[10];
    # |5 O$ V( Y+ |9 {7 `- ?* l& Z9 ]9 c        char c[20];
    & Z! ~  O* ?% R: P+ S: B: @! U9 f! `        gets(a);
    . G% A9 d) J2 a1 a) y        printf("输入的集合A是\n");! Q. K: T6 K3 j9 Y. ~& `, X, U
            puts(a);
    , ]4 ?7 ~# m5 s( a* E9 F9 G# v
    # A: N. o5 n) ^3 M( V. P        gets(b);
    3 l% b. k' F. E) K: r6 g3 P6 v        printf("输入的集合B是\n");
    5 Y: \8 Z5 _' e4 f% \        puts(b);
    1 T/ L8 B( `5 {- f2 J3 t; v1 j/ Q( H* b) C( E- F
            Union( a, b, c);1 c0 }" Z8 j4 s2 z6 }
            printf("last得到集合C是\n");
    # C: N9 x. l# `( N" \; D% f# r        puts(c);
    9 S2 x3 ?7 v( N$ b5 ?! y        return 0;
    & Z* J4 T3 i5 p- `; f}' h- F9 @) M8 N7 R
    & m/ C2 G! _: H) `* D# x2 t- r, f
    void Union(char a[],char b[],char c[])
    " ~' j) }' M2 r$ S# n7 @{
    7 t: B' q8 p, e9 L8 E        int flag=1,t=0,i,j,m,n;/ \7 A. r) K1 H4 ^7 k- n; y" |* Y) K
            m=L_length(b);/ ~, O2 b0 z5 {0 h0 z3 X# |4 l* j
            n=L_length(a);
    1 E3 Y/ K, i7 ^5 H2 L, @        for(j=0;j<n;j++)
    4 O7 n$ Z% k+ f* Z        c[j]=a[j];
    6 S5 R% Q; n) X( P1 b( J! K        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    2 U5 T2 o+ q8 g4 T/ K# j0 l0 W                {for(j=0;j<n;j++)
    - F9 @" @" t; h$ N                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    7 W8 V2 L/ j7 e                        if(flag) {  c[n+t]=b[i];t++        ;}
    ; p- i: G5 r. ~# X                }2 a) X3 {+ L0 ~' b( @
            c[n+t]='\0';
    % d' Y% ^( {( Y" y3 \ 0 F3 o+ D( L# F0 z" V4 b& c) A4 t+ U
    }5 o) O9 J6 x0 E
    - z  f: r4 O" W  I: t
    int L_length(char a[])
    " Y- b1 o" a& [) l- e: V! h/ @- n{
    % D4 q! N# _% t  z+ y        int i,t=0;;
    3 _9 D# N5 [$ v( C- P  m) t        for(i=0; a[i]!='\0';i++  )4 q, K; _& d5 P/ P) a' S8 |2 ?' [
                            t++;
    5 A6 S% k/ ~" v9 R) e; a' a        return t;/ w  T# _# o$ Q& E0 J
    }
    - W. z0 w' z! e" x: X0 j: k6 Z: A$ d  m1 @
    回复

    使用道具 举报

    慢跑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 编辑
    , R/ E. a0 m; Q+ n; @$ L2 v, E9 |. R  z* A' H
    li2.1yong用指针:
    8 n! T: C0 z4 A
    # R! L4 y! _8 t! i4 c7 {: [3 b#include "stdio.h"; Z* C5 j$ z2 ]/ N% H, H
    #include "string.h"/ y8 m, W1 E2 u5 [% m
    void Union(char *a,char *b,char *c)
    & e, {8 a4 Q; V" d8 f2 X$ J{1 F5 C/ D) z! F/ `, z
    char *p=a;
    7 z# M4 i' p7 k1 Z1 f" p3 f/ P( Ychar *q=b;
    ( U9 w! d9 o! C$ R3 a3 ~/ J7 Tchar *r=c;
    , a3 Z& _" B. Z4 O8 S( ^while(*p) *r++=*p++;- g9 b0 d$ U7 n9 {
    p=a;
    ! m, _# Y  q) s* lfor(  ;*q!=0 ; q++,p=a  )
    7 p- j4 b7 m+ E+ _{while(*p)
    ! X) z7 a% K) s8 n* t; Qif(*q==*p){q++;p=a;}
    7 T4 C# D( D# V. U; X" J' ]else p++;) q3 ]' x1 o& ?8 v3 ]8 w
    *r=*q;0 P5 R2 B$ X- ^3 f- {5 h
    r++;
    $ M( k. v. v. c7 F+ m& t}
    - z' A( V' N8 w$ L$ h0 P*r=0;/ v0 E2 w3 e: b9 W9 M- D0 M; O& j% \
    ! S+ Y; l5 y: P/ ~: H  O
    }
    , I2 s( n0 l! _) f' G' ]8 E0 ?3 b( R; O- S
    int main(){$ C+ r6 ^2 Q- h8 v$ ]" g0 J9 f! f6 S
    4 v, E. H4 P2 v) y' X! _
    char a[10];
    - o4 T  v4 R6 B; A& |/ r7 I/ ^/ Fchar b[10];
    4 c0 Z0 B; X2 B$ f9 X( t5 k) @1 wchar c[20];
    % {5 q! ?" G- h; N+ {gets(a);8 |8 P1 V7 s+ |( a
    printf("输入的集合A是\n");
    7 ^' ^/ L; s7 Y# R. R6 d1 c1 u5 Lputs(a);
    . _' ]5 r4 _2 Y  o& v* o" h
    # x( a8 e" W( y" G  K0 |gets(b);, v( H; v. f% d# _
    printf("输入的集合B是\n");
    0 }, X; t$ U; S/ ]+ c1 j5 Aputs(b);
    ' }5 k# R$ q3 h3 |9 }6 p6 T. C9 x
    ; F9 J3 t6 s9 h# ZUnion(a,b,c);
    6 m1 {/ Y( x. u' d7 F% R" t& lprintf("last得到集合C是\n");5 R( z: E/ X1 i- T, j* `- w- V7 ?
    puts(c);( r* y0 _4 k; r; J/ w
    return 0;5 ]7 v8 W& ^. v: _, \
    }; l4 ~7 `# l, z. E' S$ @. I
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:0 [7 u6 A$ ]; }* t( X
    #include<stdio.h>
    ( i2 S# K1 D, y' b4 N7 p: o
    2 L$ |' z& U' i; d7 {& R; y) q; P  struct node2 ~0 ]# W8 H4 i7 v7 G$ u- I
    {$ \6 Z9 ~& v. {- f
            int data;  X; v$ n3 V: E2 M5 {
            struct node *next;
    ( [9 l) U5 `2 B9 p- k, P4 W};- k  k1 k* w& J% c7 e; g
    //typedef struct node NODETYPE;( I2 d3 l6 @* x4 W- e
    void main()
    : W* }) U/ H' S0 D) y{$ T0 i) a; b; V
            //NODETYPE
      A4 t5 Z) L) s  t" q7 Q        node a,b,c,*h,*p;
    6 d: t  ?/ e2 Z0 |- |0 G" I0 W/ ]        a.data=10;b.data=20;c.data=30;
    ; c7 l1 d8 @( V) @9 n/ U0 h/ x$ l        h=&a;# w: K  a3 N( {! w$ x1 x% s4 j
            a.next=&b;b.next=&c;c.next='\0';
    . T# A0 |5 L4 m3 w3 I5 B. R        p=h;
    7 x' @' E- j$ f$ D7 v        while(p). L+ ?7 |- W/ B+ k4 Z# Z
            {
    ' N6 X+ f8 h- ]0 G0 r                printf("%d  ",p->data);
    8 ?0 ?% k. e9 W) i; f                p=p->next;
    % v9 s" Q) [! V8 y# L& m        }
    / x7 }# g# J5 \0 g3 b2 j: ~        printf("\n");
    7 j2 S# O( }9 n3 E; H8 [/ G}
    ! S  q% x" z$ ^! Z$ I; S5 F+ w  _; e  \
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:! }8 I) Q3 n' r* [* s5 D8 ~
    #include<stdio.h>
    ! e  a) L3 i4 S- w#include<stdlib.h>6 s1 I! C8 `0 W( n0 q1 f( \9 @# E
    struct slist
    ) |9 u0 z8 I$ k; Q3 i{" f" r. n) I  V6 l& E
            int data;' g* s; }. V% i5 `7 m
            struct slist *next;
    . W" P) @- q( ^9 T}; 3 k/ a& i7 H3 r! F
    typedef struct slist SLIST;% f4 G. q1 S% i
    SLIST *creat_slist1()  G6 E5 y* s% e) i7 J
    {
    ( |2 F" J3 ?2 G$ m* N+ O2 O        int c;1 o0 F2 ]  `# X8 m  R! _% s! m# t
            SLIST *h,*s,*r;3 L) e/ d% Y' e( |4 X4 r& G
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    6 \# ^6 m" p4 b  k# q! v        r=h;
    ' {7 o- H- e: K& A1 y1 o        scanf("%d",&c);
    7 {* c% c9 Y7 G* W4 N        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    ( ?. {, j3 B% u( f% t3 E$ y        {! T+ U% G" G2 ]3 C
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    - ~( l$ Y0 H7 R3 }                s->data=c;' x1 U8 N" e9 P
                    r->next=s;& w5 d6 U( X" C% [$ V  o4 T# ~
                    r=s;
    ) F8 V. V! c: K! ]" v7 j* |, y                scanf("%d",&c);
    % x) A# E' u( ~# ~         
    6 u) o  I; |4 b# e5 p: r/ j6 I        }
      |3 Q- U. ]. r        r->next ='\0';
    7 h. t, Y( J, [- Z! E7 ^        return h;
    ) |1 O) A/ X5 D* _: J}( ?+ S$ c/ ~7 |( F% w% g: o$ [

    0 a5 c6 Z' i# D* t" d6 k/*
    # c5 J; r) @& g/ ^printf_list(&head)/ X  w; x# h5 q1 \7 ]+ D
    {        SLIST *h,*s,*r;3 M; q3 E& A; z  F4 l( R6 B: |& I
            int c;
    2 ]$ Y, A( q9 z& V' v* R1 e8 L        h=(SLIST *)malloc (sizeof(SLIST) );) N+ g3 I. f; ~. l. ^9 X8 _) w/ h
            r=h;
    % f' G# x$ v) W        s->data=c;. O# J' C& Z$ W- {3 I% t  P
            //scanf("%d",&c);3 D2 _6 j* _5 p/ [! m
            while (c!=-1)' V3 q5 u" S8 P9 i# t! P5 q
            {
    ! t' P0 H; o% _: F! E, V6 p+ Y4 V! o6 w! ]                printf("%d",c);8 g7 w' [" N) Z0 x# e1 b% }2 w5 t
                    s=(SLIST *)malloc(sizeof(SLIST) );
    4 `) |9 k3 J* U- L7 U2 `) e+ ~# ^                s->data=c;
    # h" C; ^  {7 a* I4 Q3 ^+ l                r->next=s;
    7 d# |) X) c1 A* p( ^! N5 d                r=s;8 U& _/ s2 K2 j" P4 \
                    8 E9 l* c. }! z8 k+ j; n3 c& _
             
    ( o, L8 _' I9 T+ @9 {& @        }
    ( W8 l" n. u4 f- h& E        r->next ='\0';
    ) L# m) I0 s+ [        return h;
    # s8 R* A0 c! |% D}
    ( }& K5 X6 J8 T+ x& j*/% _& ~" [- o) h. ?5 R
    void main()
    2 M- k" b5 |+ U6 m; y8 @  y# y{ SLIST *head;9 q7 V1 l4 G& w: p6 n9 ~* H9 m

    9 `7 y0 i% Q" B; ]" Ehead=creat_slist1();                //调用链表建立函数,得到头结点地址
    % Z5 w/ O2 `' g: Z( l+ Xprintf_list(head)
    ! ^4 \4 @5 g1 {1 G}
    + o4 o& }/ ~& {& {/ Q5 r. w6 M
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。9 O8 T! C3 g, G1 Y, t  z/ }* _

    ! n( J' K+ W! p#include<stdio.h>* `$ y+ u  |% b/ \: J+ G9 n) i+ _
    #include<stdlib.h>4 q/ l9 V& C/ P$ S1 U5 f

    ) e3 K1 y. t, D4 a struct slist. V9 }6 r$ E1 q, @7 I, O
      {+ V- y  J" I$ V1 r2 U
      int data;0 C* E! _: N8 K" u1 a
      struct slist *next;
    $ S/ |% c. `( J9 H  };
    9 `1 t! b& @/ ]; m2 n; j% i  typedef struct slist SLIST;( n* U8 v/ u/ d) X2 i5 H
      ]. z& r7 V. g6 N
    SLIST *creat_slist1()" H$ T3 K$ e1 D5 |8 w
      {
    8 Y2 `; C: `7 \1 h8 K  int c;3 l/ i: S/ U, E5 E) p1 L
      SLIST *h,*s,*r;
    % Z5 K3 B$ {2 s1 C: c  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    , o# W4 m6 o: D9 ^9 C' gr=h;  S4 k3 t4 ?! K$ t+ \* R+ t
      scanf("%d",&c);8 q+ _8 h0 g( Y: r
      while (c!=-1) //当输入的c为-1时,代表输入结束6 h1 C, O+ ^" O! E* v7 y7 b
    {, Q1 y# U9 O0 p7 j8 ?
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    ) O$ T6 l/ W) _4 A5 B* n$ us->data=c;- Z1 l4 B3 W$ Y
      r->next=s;
    . {  X( }  w* c4 e6 I3 Q  r=s;
    5 x  g7 z5 {. u: E3 ]% ?+ M  scanf("%d",&c);
    + q% }, z2 M" U" }2 N/ s& e) R   z+ _& Y' E( O4 y; \
    }' r' ^* Q2 g8 F0 h' z
      r->next ='\0';
    / }4 I1 ^* [& H) r' O. i# G  return h;
    & V! D# u7 r4 L  ?. ~6 \1 K  }8 S( w+ }5 O6 Q# U% e

    9 a# I0 b# ^# @% @- a/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    : W. ~7 }2 ]% K* U3 b3 M0 xint printf_list(SLIST *h)
    $ {: W0 M% B3 n. k  |4 y* n  y  {
    ( S; I; M% ~& }% J6 {+ n1 y  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚8 y' w/ P0 _* i' P/ U
    while (h->next!=0 )
    # }. ]" }0 `& }7 n. e- b3 T  {
    " _! b7 Q: P; A' T" u, y  printf("%d\n",h->next->data );
    4 m. J; F$ O0 F9 \/ M1 |  h=h->next ;
    9 A5 N1 H8 }% _7 ]' e! P  }  F: l/ w8 O# }5 u  M$ k, A9 Z+ V% A
      return 1;
    6 B! h7 W' {, O  }( \* j4 y2 M( ~6 d2 u% b3 k" \
      /**/1 b0 [8 W/ ~2 E5 |, I" {
    void main()
    6 T& z) H* D0 J5 h  { SLIST *head;9 u/ ^/ B" _  B! p: C, P. x5 J
    , I/ O* P9 h  @: s/ G: _& x* R: I: C
    head=creat_slist1(); //调用链表建立函数,得到头结点地址# h: K4 J. z7 d! m
    printf_list(head);
    * P; y' L1 e3 ~' ]; i9 Z/ s  }
    ' a3 u8 `7 m8 u; E
    7 p+ Z5 r7 V0 H4 J
    " \& P8 I3 W) W, z" @此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-12 04:50 , Processed in 0.518955 second(s), 89 queries .

    回顶部