QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2437|回复: 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 编辑
    6 m7 ^. z* }; x0 n2 o! G8 K) }" t* e$ X! p
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。& U9 N% A0 `1 s# P$ _2 U
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    $ t' B* j: @/ x; n
    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集合。
    - Y) v6 @  J. ~3 n& E9 I$ U这个代码是用数组的、算是比较简单的。2 x9 {$ O4 A5 K! Q7 l7 X

    : Q/ m3 M) ~/ T* {#include<stdio.h>: a& |$ e% u" C. H( N5 X
    int L_length(char []);
    : v! y7 I$ J; k% yint main(){
    ( [7 P0 @' ?/ g# \" ?! Y( |, h( }        void Union(char [],char [],char []);
    + z0 g9 O7 f5 ?+ B8 K4 {- h" |3 K
            char a[10];
    - Z1 \3 w: T# I. W# q5 _) f) k5 b        char b[10];
    " D( A( M6 o" q* C        char c[20];
      s* U. I2 P' v9 B3 l        gets(a);1 x: \8 f  `4 o5 m5 a2 f, N0 Y
            printf("输入的集合A是\n");/ C: H9 B! Q) u" h* W
            puts(a);# q1 _0 h7 T& R% D
    % m5 u8 W9 @8 x8 Q/ E
            gets(b);
    . L9 N0 c1 w. G( X        printf("输入的集合B是\n");
    5 J/ n' t1 T7 _* N/ n% q        puts(b);9 J3 h1 `8 v# N$ z/ u" y

    - A5 B0 l5 S$ b1 Z! z        Union( a, b, c);) o" Z4 P4 w3 `0 c( A# E, I
            printf("last得到集合C是\n");) e- m+ F) V2 R3 L; U/ B1 a5 K* F9 s
            puts(c);1 S  L- Y8 o( _, y
            return 0;
    " T, v% e7 J' p( a}
    4 u: @9 i: A9 `) J. ?
    0 d0 O9 A& T( v, u' ?void Union(char a[],char b[],char c[])
    0 u+ ~6 V  F6 O0 b" Q{
    " Q/ p- a, e2 S. `% D        int flag=1,t=0,i,j,m,n;! u; J. a9 P. Y9 m  J$ F5 P
            m=L_length(b);6 @" ~  H: r  H& N0 V. q
            n=L_length(a);! f* `5 ?: C# t. u* [
            for(j=0;j<n;j++)
    + _+ I5 e& q. ]* C  h+ y* B        c[j]=a[j];
      V4 w+ T2 z/ `2 o" M/ r        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    ; v, o! l5 F; ^4 e. ^                {for(j=0;j<n;j++)
    : @3 ^' _, P" G4 t' {7 B                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了$ T) `4 r1 W; N8 b2 F2 ^* {0 j
                            if(flag) {  c[n+t]=b[i];t++        ;}1 ?8 E5 [. y1 W' R4 b
                    }
    " y& A" I. X% T# w$ u8 J        c[n+t]='\0';
      ^( J3 l( w3 D2 x4 E2 F # J  i2 I; P3 m; ], I/ }( a
    }' Y1 A4 r8 c0 }6 ]
    % A7 ~" ]0 |! e  K# p2 F7 D
    int L_length(char a[])
    9 R  b( [. V1 v" O! [) B6 B{
    - W2 c6 S. T/ T7 `7 F, V2 V( ~4 j        int i,t=0;;
      i' y& _* z& x  G, f2 m        for(i=0; a[i]!='\0';i++  )
    " S# w7 _  Q) U# O. t                        t++;- Y' q7 {+ j6 i, K% h" m, V, Q
            return t;
    - T( s& w% W$ i" ~}
    . }, l) A2 t4 F+ B# E( m" g9 L! P. G* m7 P3 g) s8 s3 N5 m% g
    回复

    使用道具 举报

    慢跑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 编辑
    ' s4 J5 i8 e% _8 l8 }& d2 A+ c% G# ^
    li2.1yong用指针:
    - B- Y3 q7 V8 u& r% _" N" b; k' `/ p" ], Q& _+ S8 Z4 i( O
    #include "stdio.h"
    . W" ~1 U( `7 ?* a8 t' u2 ~#include "string.h"
    ( C3 A" ^6 O( l6 [void Union(char *a,char *b,char *c)
    : o8 L! f3 E7 x3 {( q{
    / t7 j) V. H: U  \2 ~+ kchar *p=a;( [& w" c1 l% b( V5 t
    char *q=b;
    0 b/ z* F0 m. |* i! d6 `char *r=c;! F) }# H' a8 O. F6 v4 M
    while(*p) *r++=*p++;, n7 ]3 @' M* L) h
    p=a;
    % N# X6 S3 B3 G) U. @for(  ;*q!=0 ; q++,p=a  )* ]4 E" E5 d, Z0 t8 I7 O5 m
    {while(*p)& _$ Q" {: U7 {9 T8 ^2 {' e+ t) _
    if(*q==*p){q++;p=a;}; Z; {7 K  \6 e# f
    else p++;: b! Y7 F0 K* K) k0 \  b1 J. Z  S
    *r=*q;, h: s! B+ t" ?: x) u  e, O
    r++;
    7 o3 I9 j$ a7 u# m: h}
    ' `; l+ S% r5 S. O6 D*r=0;
      U8 ^# c0 K: A
    # g- G6 m6 K  k4 a}
    1 l* i/ T4 ^- k9 q% m  {+ T
      q7 r; ^4 Q: h+ h' @) Dint main(){
    " }6 T: w# t# G; Z. K/ D  y. Z
    3 [  G& e1 C' Z4 V, C8 Jchar a[10];4 S9 l1 y7 V( \0 O$ Y- S
    char b[10];. s/ V8 ^! _" _
    char c[20];5 O6 i8 l$ D4 C- S6 X1 K
    gets(a);9 B" k' ]9 M9 s: n9 L3 y/ J* @
    printf("输入的集合A是\n");
    ) I5 E% y2 U4 r, J/ L! eputs(a);! K& O3 `6 {5 \; s. H  R, |
    " Z: c0 c+ u6 @5 M* B& E2 w" j
    gets(b);
    . E. ]2 u9 Y! ?1 Z6 I3 s8 [1 fprintf("输入的集合B是\n");. J3 d! a9 Q& J4 p. V; u
    puts(b);
    3 {4 K1 U+ y1 o1 J$ ?$ ?: {+ L6 M% q& }, a6 Y5 h5 K$ N$ Y0 t
    Union(a,b,c);' ?# u$ u( \8 W+ i5 T; Z  z
    printf("last得到集合C是\n");' ?+ Q; L& U" s- @' h6 Z# v# R
    puts(c);4 r& F8 K" A" T5 F- M5 B& W
    return 0;( w/ V; ~: E2 P7 m* x1 u& \7 R& d
    }. V4 b0 G- l# D0 N, y8 ?; ?1 E
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:( \+ J8 |( ~6 z# i# R$ C
    #include<stdio.h>. j" ]! f+ \$ ]2 u; A0 u3 B3 H# a! X

    ! i* b1 ]$ x, m# s" D4 `: J& q  struct node, G/ Y/ |* \7 Q8 m( S+ a, e- q
    {* N. s0 u# v) }# a* x; f+ b
            int data;
    - W$ n: a9 f9 A# K' r  Y! G        struct node *next;: H5 s" y0 L6 H- W3 R; k; N
    };, y; h5 ?  m6 l1 w
    //typedef struct node NODETYPE;
    $ c2 [& k" ^2 @- k5 s% Rvoid main(); \5 }7 E4 ]% ~: D1 \0 \
    {% k) ?" H5 G( M; {4 }$ r
            //NODETYPE
    9 r) `; y# d1 ~: F; ~; E        node a,b,c,*h,*p;
    % {; q/ R3 c$ \9 P2 g        a.data=10;b.data=20;c.data=30;) |/ I3 J$ ^% w! u0 }7 L1 d
            h=&a;' c  o- B* S$ x( ]
            a.next=&b;b.next=&c;c.next='\0';* q+ w! p$ [0 q+ e
            p=h;
    8 \, L# G4 U' d- h3 M# e2 b% s        while(p); S2 }9 G# g2 I' k  }
            {" O' G8 x  o- U1 }$ H% D+ n& t
                    printf("%d  ",p->data);
    ' H3 _4 n! a" `3 W                p=p->next;
      ^5 |6 d3 M: T  t2 b/ G4 I        }
    0 _0 B# I) c+ Q- W        printf("\n");
    / r2 h" l  ~2 F0 ?3 Q, y}6 ]2 d: e0 N, _) ~
    6 @3 _  t2 X# l
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:7 V1 n% q! i8 V  X  L5 Y) u
    #include<stdio.h>* P+ G8 m4 m( I( w5 w; t( X2 N
    #include<stdlib.h>
    7 |  i8 m: U7 j1 y8 R& Pstruct slist' t* i3 d9 w* O) {
    {
    ; h6 j/ \( j  m# G+ e9 L        int data;; G$ F; x; e0 o  r  {9 |
            struct slist *next;
    . H" Z1 i' B( H$ L( o% Y}; 6 @5 L6 v$ H6 m$ ]' Y3 }" _
    typedef struct slist SLIST;
    + L* [  p8 V: USLIST *creat_slist1(). `9 X' U" O8 Y# \8 b+ K" @
    {
    7 T/ ?3 L: n6 }$ x) J        int c;
    . f% e' G& |5 V4 w        SLIST *h,*s,*r;% P! y0 o( {" a) B" {
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    7 C- s+ y1 |0 a: [. \        r=h;7 U+ D) w6 J9 i" V9 S
            scanf("%d",&c);& a- j7 y! f6 j7 M6 j
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束/ W- V9 F2 @- N+ [! V: |4 U; n
            {8 [" o! k; g+ f2 s
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    * H& R0 L# B. I9 L3 A# l4 h; I1 O) D7 ~                s->data=c;
    0 N5 F1 S; v1 D8 v  `                r->next=s;
      U2 Q( a" @: D2 `# X9 h                r=s;
    : I$ |+ b* V, p+ Y+ L5 p9 p                scanf("%d",&c);6 f" ^( n: D% O9 d) D8 C2 o. v0 T9 S0 J  b
             
    7 a) n7 }0 T5 {) [& A        }
    1 T1 d, J8 k; ^7 v( w        r->next ='\0';
    8 g" \0 t+ y3 N, W* r% ^# M        return h;
    + i# Q" @* ?7 @1 s}; z5 @- c9 u" H- S4 s
    & B$ d7 U, O: n5 N
    /*
    . `0 S8 d( q: Q1 O. aprintf_list(&head)' R' B+ b9 Y$ t1 v( V
    {        SLIST *h,*s,*r;+ _5 \7 Z1 H" f! a- H1 R9 z3 E
            int c;
    & D! A5 V! n, E, R2 h& o        h=(SLIST *)malloc (sizeof(SLIST) );
      J% q; M) c7 W, V& `        r=h;. C! M2 ^* w. ^3 s1 ^0 S  N
            s->data=c;( A! f2 b! t4 C0 l' O% L3 I  U
            //scanf("%d",&c);. t. z, G3 @. d' |! C# e- e( W/ Y
            while (c!=-1). i' K+ a4 J+ j7 o* B( N
            {7 [1 [$ x3 }, z; U, `6 A
                    printf("%d",c);# p* E/ [5 g; N  Z* w
                    s=(SLIST *)malloc(sizeof(SLIST) );0 L% e& g) t& l5 R
                    s->data=c;
    # t, Z$ Q, {! c3 ^( X                r->next=s;; t. G! c* R" _# k+ N
                    r=s;" }( S; ^  n( @2 @9 Y
                   
    ; G) o# }3 f( k* b         
    $ I( n% @: ?9 d6 m8 a        }3 i+ ]- ?3 B% f8 e
            r->next ='\0';
    ' K, U, A2 T/ N$ D        return h;
    ' [& @7 g/ ~% o}: ]5 ~. ?: v3 Y/ z' p9 V# k% v
    */
    & a% M; m9 a1 H! @3 ~void main(); K$ |5 ]* U0 _8 O1 U' {1 p
    { SLIST *head;
    - _  D7 W- ^) _5 u& ~( n2 ?# _7 E0 C! I6 ^# l6 V3 k
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    # d. \6 |: R$ u! a3 A6 R0 L  {printf_list(head)
    # @) I4 H4 ?9 H5 P; G( G}) Q! K' K' R. `' y, E# X( o
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    1 F+ V* m3 }' l8 f5 F" u+ t4 J2 A( P7 c9 H) \! n! X9 i+ c
    #include<stdio.h>
    " Z: F/ D) ^% @( J #include<stdlib.h>
    8 k; J. w" `! C; U2 A- m7 h7 [ 0 E- V& I( s( P& ^) j, |" F
    struct slist
    ! X# V1 J  ]5 [1 @2 x  {
    , }9 b2 A1 Q. C+ v) d+ I1 g% k  int data;8 i6 Z8 d0 ^9 @, \% ?9 o. b) z
      struct slist *next;
    , v3 D, ?0 {  ]% d% n1 V  };
    7 D7 d, s- h# I0 \( z+ k# I  typedef struct slist SLIST;
    5 U3 {0 z; n# b4 k 1 n/ u/ C: }& l! Y& I. ^' V" _* F/ B
    SLIST *creat_slist1()* b: Y' @( A/ V' X/ u& d( Z( Y
      {
    ; E# ]3 }# Q: Z* W' k: Y  int c;
    , V7 l7 j7 A% V8 B7 G9 z9 a  SLIST *h,*s,*r;! V5 `/ Y" ?3 x6 i, O- \: Q9 }
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点3 `7 F" I9 v) Y+ B
    r=h;
    8 H) Y4 y: ?5 \( q0 S- y6 [2 `  scanf("%d",&c);
    5 ?% k' P: M0 q3 ^+ G, ]  while (c!=-1) //当输入的c为-1时,代表输入结束
    : C( z$ w0 u. Y' y, d, Z{
    $ N6 M$ ^% n- x  U8 hs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点: M& H0 u2 u- t
    s->data=c;
      E9 z- y+ a4 F# F  r->next=s;. v8 j" S1 T$ {( b% ~- s' u
      r=s;# z3 R; u1 ?" w* R. U/ E% B6 I) {
      scanf("%d",&c);7 G' j8 Z0 `4 P; s; ^/ b+ A8 u1 }! ?; t

    / p: h- k. k" E6 ]& d. T}# }* }4 w! O9 s) v8 M
      r->next ='\0';
    , [( H+ l4 I/ V8 L$ |) |  return h;
    , d: u5 k" x- h: g+ O# \  }
    5 Z( [9 c, m& l: O" x( |+ S
    ; @( {' B/ A9 s8 N/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?. y6 C# T5 F& h1 H
    int printf_list(SLIST *h)
    $ \( L' _5 _. M5 Z  {
    . H; ^* C) R4 T# P' G  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚$ g/ S  a) t/ V* r
    while (h->next!=0 )- m/ V! A8 n% p; j% \
      {
    0 Y& Z. q0 H2 v; [6 P; C  printf("%d\n",h->next->data );
      o9 s: E$ g( r, @* W  h=h->next ;
    : j* W' l, I' \6 Z$ \+ ^9 ]5 e  }, k/ f2 d" A  d
      return 1;
    1 l2 M: E$ w/ i: L! ^* M7 W  }3 V- ^6 n% D2 j1 o% T2 B
      /**/, s. T( f7 P: ]
    void main()
    4 d4 Q/ W) o8 ~0 Z. k/ l  u  { SLIST *head;2 X, g# ]3 r5 @3 T+ a& |2 o

    4 C% j, T+ N% J8 b! d; z% Chead=creat_slist1(); //调用链表建立函数,得到头结点地址# R2 Y9 k; ^+ J$ Q  d% \
    printf_list(head);
    0 w: T% F/ v3 `9 g! T% o' q. v  }% f; `) A' U; E0 b) @5 d
    , u0 V8 G7 Y( D' o6 B

    ; h3 s/ M7 G% i1 o, \此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-2 21:49 , Processed in 0.436059 second(s), 81 queries .

    回顶部