QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2552|回复: 6
打印 上一主题 下一主题

数据结构,清华 严蔚敏,例题代码(自己写的,持续更新中)

[复制链接]
字体大小: 正常 放大
慢跑20 实名认证       

60

主题

8

听众

3684

积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    跳转到指定楼层
    #
    发表于 2014-3-10 21:34 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    本帖最后由 慢跑20 于 2014-3-10 21:38 编辑
    # ~6 t/ Y* s! S$ R+ D6 J9 r7 K. [( r6 w
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    ; x; _, J; s) d! O! V+ @# H3 F* b  C刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。1 @) V) T) x' W9 u% N( S
    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题讨论群组

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    , Y' V, v9 p1 E3 Y% g8 \1 t
    , Z6 o  z# \, S$ r: Q#include<stdio.h>! g$ d. q1 Y4 ]; |4 h% F/ Z* A/ l3 a# Y
    #include<stdlib.h>
    5 @# ?% S5 R( I, ]
    1 B2 R6 T. [9 r; |* E( U struct slist
    . V2 R% r8 _& ^! t  {: A$ n5 O+ e" e$ y: X
      int data;$ f4 k% c( z  C6 B3 V
      struct slist *next;9 S/ b) I  l6 u2 a! @: T. Y
      };
    - w/ j% K1 y4 R, ^  typedef struct slist SLIST;
    : Q! ?# S2 w# k: {8 h: O/ M! k1 C
    * r+ ^0 q2 i5 P8 O SLIST *creat_slist1()( i$ x% U3 [! B) C7 m; a1 u
      {
    % S+ t# L+ }! P( S8 ?% p+ J  int c;% l. N' G) C/ U  E; P
      SLIST *h,*s,*r;
    / a2 J  U& Y5 W# y  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    8 X. b# n/ t2 D# O& Wr=h;
    / S1 ^! q/ z8 ^' P* `! f8 R4 ]  scanf("%d",&c);
    / `! {- j) B6 m, M9 t! b  while (c!=-1) //当输入的c为-1时,代表输入结束
    1 i4 ?. ]1 s5 F; W+ E7 C{
    + ~- c8 H- @- A9 Z/ Cs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点% R9 {2 |- |! Q% ]9 Z! m  Q
    s->data=c;
      B2 ]1 x6 I: t2 ^+ U0 z& W; o  r->next=s;1 [  h& `, m3 q
      r=s;
    ( g( S7 B  f( _  scanf("%d",&c);
    1 B2 m$ S: S- }* x$ g- C
    ; y3 m" w3 |4 ?7 T}
    : \, h+ c/ n( e  r->next ='\0';
    $ @" V, m5 q/ h0 ]  return h;
    ( j5 i2 z' m; h3 w% P" W  }' m+ P! R& j7 Q. t: ~7 N

    - y3 e1 ?8 X; @, A- ~  ~8 ?- W0 ]/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?; f' X8 O3 n0 [" W9 p! V
    int printf_list(SLIST *h)
    + ^8 Q6 J7 a# Y0 j  {
    - T6 @& o3 K$ ]' G6 A5 j  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚+ n" w+ H* \! B+ G
    while (h->next!=0 )
    $ ?" w. s" _! C) Z7 r! y' s1 o  {% ~' G; B) F+ l3 u8 G# x& B8 D
      printf("%d\n",h->next->data );) L; l. U- p- ~' a
      h=h->next ;$ F6 R5 \" I* Y4 k. h
      }' O& V; T. [% z6 K/ j# y9 H
      return 1;
    ' L- P0 K, j, e3 o% Y' K- p  }
    9 [6 X$ I" L2 ^  /**/0 t: X/ F5 R- g
    void main()
    : C2 b8 F+ z7 y/ N( z7 N! n  { SLIST *head;' q" v! F$ P2 s

    & X5 p) I" C: _5 d1 ?7 Ahead=creat_slist1(); //调用链表建立函数,得到头结点地址: p6 D$ n, ^8 H  @: H& w
    printf_list(head);% a/ y+ T) }% x& `3 ^
      }/ i: y" l) }% ?) @% H
    0 ]% P" c& x9 j+ r6 P2 |

      q3 C* C% y& g4 y7 {2 s此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    此代码为生成一个链表的代码:
    9 f  @+ Y' p  ]#include<stdio.h>
    ' c# e) d7 T9 @" n% R#include<stdlib.h>
    & g3 y/ N# [* C: A- \9 x3 {struct slist( F5 w, |5 V9 \$ E# j0 |
    {8 J; n, D" [3 ^1 _9 b9 e8 ~
            int data;5 Z1 x( T/ ^6 m
            struct slist *next;
    5 f  \, S, M3 f, s0 T}; * ?  ?7 j2 \6 J7 ~; R* e# i. {  \: V. V
    typedef struct slist SLIST;
    9 H$ M5 v+ f2 b& O7 N2 @SLIST *creat_slist1()
    ) w! V% Q* d! H) p$ Z+ Y) m( [# K{
    ! Q6 I4 ?: a+ T2 q' g0 l        int c;
    / u" n1 \, V4 K        SLIST *h,*s,*r;
    8 S8 D/ T% u# x; f! v        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    / c- r8 ]; s' `; d/ ?- `        r=h;
    ) g9 q8 w2 k1 I: X! K' v. t# ^7 k        scanf("%d",&c);
    " L8 S4 e5 W" ]4 R- f: m        while (c!=-1)                                        //当输入的c为-1时,代表输入结束& a$ I9 q3 C* n; v
            {
    4 ^4 ~( j/ X1 [: \                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    / B. ?- _8 u& `& q2 e$ l5 V                s->data=c;8 T) ]/ @; Y- u# }
                    r->next=s;% p7 }, g8 s: e% b
                    r=s;- b! X7 Z+ o8 |
                    scanf("%d",&c);
      ?( B# m  t: y0 S  R. `# H$ c& P9 }4 x         + t7 U: k) r* W2 J. x
            }9 U& f0 i3 Y% A$ B' s3 W
            r->next ='\0';
    : i' Q$ A5 D& z+ c        return h;) R% O( S( G  b& x
    }
    ; s: W1 L' o. F! m% B+ L
    ; r: i. ^' Q4 d/*6 K0 u# u6 D* W( ]
    printf_list(&head)5 u! B8 a" ?2 d* \' |
    {        SLIST *h,*s,*r;
    % n7 K0 P  z' I. e% c1 A        int c;
    0 p5 a8 b4 c1 l        h=(SLIST *)malloc (sizeof(SLIST) );+ I/ x2 y1 |7 j& a+ Q! L" X) [
            r=h;+ ^" C& P7 o. {
            s->data=c;
    1 r& ~/ E/ l3 b! H; e0 |        //scanf("%d",&c);
    ! o: ]. p0 q) `        while (c!=-1)
    4 |! Z, p3 ]- Z! b        {7 X! a: b! m; T0 D: W6 N
                    printf("%d",c);
    . E, m: m  W3 \' o( i  o$ M                s=(SLIST *)malloc(sizeof(SLIST) );
    6 h, \$ n# ^, N) x3 F5 u6 j$ A                s->data=c;
    ; }+ T3 Q4 @: f# Y1 ]                r->next=s;
    ! W( z0 Z5 g; ~  C+ @, u% J) _1 ^) I                r=s;- _; \& X; r" V; ?7 e/ M
                    # ~1 Y) I! w2 d! v! \  x4 P; W0 H
             5 b5 K% G* [6 O9 i1 @
            }
    . r. d" _  {* ~9 x, t1 w5 T5 f2 y* F. i        r->next ='\0';: J/ N# K) f0 L4 s
            return h;2 }& [1 \/ P9 q5 \$ d( q
    }
    " Q& @2 z3 Q- u! V4 [) H*/9 W8 v3 G; C0 o! _! h0 d
    void main()
    . {: i2 Y+ G% G5 G{ SLIST *head;3 t; r" ^& F5 k3 C8 }
    4 n/ G7 q2 n5 ?9 ]' |
    head=creat_slist1();                //调用链表建立函数,得到头结点地址+ B% _  y' V! o. O+ H/ d
    printf_list(head)
    # O! E2 g) r0 Y2 k, S3 Q}. P, M7 m) \! h- Q( D. V* Q+ C1 D
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:; ^& ?7 \' }' c( w
    #include<stdio.h>7 q. d% |! R- Y  R& b+ G* x
    ) N& J5 L8 l" Z
      struct node
    6 d, I0 K, \. [- U3 E{% [' }" a$ e" i" J
            int data;
    8 J4 P! v/ N+ R" @        struct node *next;1 o3 K* ^% J- ?
    };
    & j- O; ?0 J( n5 _( x//typedef struct node NODETYPE;
    $ ?0 q5 o9 E) E* s% D! _$ ^/ b: @void main()4 F/ X0 G4 T. N2 J0 b: A# M2 o
    {- D) u* [. _9 q/ C+ I1 \9 E" q" k
            //NODETYPE& `; J" f1 }# D5 G
            node a,b,c,*h,*p;
    4 U0 N3 l8 i( e+ b5 \        a.data=10;b.data=20;c.data=30;
    * f2 Y& G# l  x. d+ v# N9 Z" j        h=&a;
    2 l. c0 a/ d8 a/ r: W        a.next=&b;b.next=&c;c.next='\0';
    6 _8 R: T5 P# j  T8 P        p=h;
    * s  l1 H7 \' i$ R. h) Z+ |        while(p)
    % n; Y7 k. [9 M/ l        {
    5 h; B3 }8 p* V9 v/ ]                printf("%d  ",p->data);
    3 v0 ^, I& E" S: F" r* l                p=p->next;
    3 Y3 Q1 N" \- w4 V) K        }
    2 G' S$ P+ {" {& e/ A, W6 }        printf("\n");
    ; m" V% X+ S! c) n- K- T0 ?}
    4 y1 F: W! h$ T  {! t
    + @" k( Q# r# k( c- W) {7 _6 A$ d这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑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 编辑
    / F$ ]. Y% U1 [% t; i7 R1 g0 q" ]% M+ ^: O( p( g7 Y% T
    li2.1yong用指针:0 A7 t2 [3 r, ?) s2 W$ x3 K
    % z/ X/ S% g+ K
    #include "stdio.h"
    % T3 Z/ h8 K* W+ V6 u#include "string.h"# g! P! x3 D: {. k% Y  g
    void Union(char *a,char *b,char *c)
    2 m9 g; G- y* y7 F{" e4 h: N- q- P3 r6 A/ ?. m
    char *p=a;' p; Y0 [. |; p
    char *q=b;
    , x, C' }$ ^" Achar *r=c;
      c9 E; x- ~& G. y0 qwhile(*p) *r++=*p++;
    3 q7 ]1 K3 P6 i  np=a;
    " m7 N0 I' d/ Y3 l: Z/ Wfor(  ;*q!=0 ; q++,p=a  ). x: r2 C% r2 p# X+ i; K
    {while(*p)5 L$ }! X" Y9 t( o  R9 \
    if(*q==*p){q++;p=a;}9 N: P' k% m5 H1 r" e
    else p++;6 ^2 c) R% D# \. q
    *r=*q;
    3 f; u. A1 f. ]3 o) h0 sr++;# ^+ `0 Z2 P7 |4 A+ X% u, g
    }
    3 x% G5 x0 d5 h+ t. Q& q*r=0;6 [* [( y5 f1 d; |; k' @

    4 I2 j4 y. z# z& d& w* d/ z, y}
    2 K/ o! z- L8 b7 l
    : z  S! I( {1 b: z3 G1 ]) Z. Q8 Jint main(){
    $ ^/ q! e$ G2 }! W2 f2 Y8 k, O7 c6 u& q% K! p, U# |; S" ^& l
    char a[10];
    . l5 ?5 E3 m4 L7 vchar b[10];: U  \- i: _! B! I: F1 V9 D
    char c[20];% C& [( ^/ t: W1 a
    gets(a);
    8 ^! X4 u. L* P+ I! Gprintf("输入的集合A是\n");
    ; d. F1 ?% g3 y% ~. i2 O: |puts(a);1 ?- U3 g5 o. G! I9 k) z
    ! h* a! j7 @: D/ e/ d1 n1 I
    gets(b);
    ' T- c! R0 W: X: P& A  e2 A0 fprintf("输入的集合B是\n");/ Y' [& j& }) n! _
    puts(b);) Z$ F0 v0 g- |+ i" O

    & X9 l. O3 O' L, B$ s3 MUnion(a,b,c);0 z5 e9 J1 O9 j/ C5 s! P
    printf("last得到集合C是\n");
    , u: i; `/ g3 Z1 C3 @( Bputs(c);" \5 x; R6 k* [& v* Q) N
    return 0;
    # y- j( ^! e- }. {# ?- s}
    7 G9 e( }  e* }  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集合。6 e5 x( T8 h9 U6 a  d5 d) r
    这个代码是用数组的、算是比较简单的。2 h3 A) j! N4 e4 ^2 ^! r  w; o
    3 C. E) M$ d7 x1 t4 F
    #include<stdio.h>
    % ^0 b+ q* j2 W8 Y  tint L_length(char []);, _3 f( a( n! T: M
    int main(){
    ( p) E6 I. F/ _* ]1 ]9 e, }5 N8 ]        void Union(char [],char [],char []);4 q4 w. s* L: B$ F: b
    ' i; n$ @' _9 j, W) }* G% H- z
            char a[10];$ c( {: g) e0 W! ?
            char b[10];- _! b1 @- g$ w5 k9 e
            char c[20];
    5 ^# }/ n: e; y, F+ I3 |. E$ h) k        gets(a);$ F! o- Q/ L1 I: E
            printf("输入的集合A是\n");# }9 e' A# w. d1 o4 I
            puts(a);
    8 Q* h1 S6 P9 ? . W1 p3 J8 ?" {! s* q
            gets(b);( J3 t9 n4 a. o- M) e# k
            printf("输入的集合B是\n");
    ) f. P5 a; ^) J+ s- _        puts(b);- `1 Q8 e/ [0 F1 v% S

    6 l; U6 N) p, d( I1 O        Union( a, b, c);
    $ K8 w$ C4 O2 ?; R! _. o" W$ R+ {. f        printf("last得到集合C是\n");
    , E7 B& i# C( T7 Z9 L        puts(c);
    8 K3 q" K  t1 w5 b        return 0;
    7 a" o  C4 V- F; p}
      w; o0 k  x( ?. F
    - E; \5 y5 m' N0 K9 o  svoid Union(char a[],char b[],char c[]). c9 z5 q5 _' m: F) l; g. @
    {: [9 m" i  H% O# D
            int flag=1,t=0,i,j,m,n;  d1 z2 y, D- g5 D( q) h( t
            m=L_length(b);  h% P" |5 t* o9 l- G
            n=L_length(a);
    9 e) z8 c3 A, \5 P! H        for(j=0;j<n;j++)
    + j+ h- ]# a% p2 j+ W* ^- D" O+ |        c[j]=a[j];
    6 C# x$ o6 N' a) N+ U/ P        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    . M# z5 G- p  |7 Y                {for(j=0;j<n;j++)
    ( |# @. ?8 I5 u                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    # Q- {1 d# ^% d. M+ x                        if(flag) {  c[n+t]=b[i];t++        ;}
    - x8 L, h0 W4 O( m* g, h" K                }' N, _# U6 \6 ]6 }2 }- f
            c[n+t]='\0';: }! j2 c; M& o1 h2 x8 h

    : G+ x: s& u7 Q& S- j* R}; A0 @7 \2 V/ j4 c4 Z, p

    * K# P0 U# B' s8 e4 K$ z: b  lint L_length(char a[])
    ' i( l' Q& }3 t4 D# Q{
    " v5 c( V) X( `( S" s: d/ Z        int i,t=0;;+ [8 y4 T& \. _  e% P$ `  _" b
            for(i=0; a[i]!='\0';i++  )
    0 p2 v* ?; h( t0 ]4 z                        t++;, K. q- b5 @, k% v
            return t;
    0 S  j/ g# f1 Z2 L8 {}
    " g* }8 q' K+ I- l' u3 h- {2 v5 v: l; u
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    回复

    使用道具 举报

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

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-11-1 12:09 , Processed in 2.167673 second(s), 83 queries .

    回顶部