QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2553|回复: 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 编辑
    5 m, u6 D" w: e
    * [' U4 u9 f6 t计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。* p  P: l$ h& R) Q9 p
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    - C  q) J/ ~  w# C
    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集合。
    / P# \; i4 w! @( F  ^这个代码是用数组的、算是比较简单的。1 t+ Z( h$ j6 G' d4 {

    - l3 j+ A1 P% T3 k7 e#include<stdio.h>
    ( z. U; S5 k9 m* `4 t" l+ @int L_length(char []);' y: m; H% i7 S& C3 |
    int main(){* O: C  |& n' j+ `4 l4 r( x
            void Union(char [],char [],char []);
    ; u+ ^1 B  \% ^. T- H1 x: Z0 m2 W3 I8 v7 O' ~( m# I4 c
            char a[10];* |! x6 X7 C, N' u  G" i
            char b[10];
    - W2 O8 P7 S4 P* s0 w        char c[20];7 V8 S7 N3 `- K# [' x% U0 w7 Z
            gets(a);
    2 d# j$ a! _+ Q8 t& q$ v% ~* [3 H        printf("输入的集合A是\n");% @1 B. @. d9 O4 ]5 s- N
            puts(a);
    ) c! Z* o; m7 w. d. m; t0 D 0 H! r* F1 ^7 w, Q
            gets(b);0 z) p0 @3 V+ O/ Z9 z: c
            printf("输入的集合B是\n");, Q# o* t, v  k
            puts(b);
    ) j8 U) ^" q0 |  A
    ; }2 `6 A& @6 n9 v5 t% D        Union( a, b, c);
    ( E, ?7 ^8 J! n, Q. ?        printf("last得到集合C是\n");' a. J% J8 A) W# w2 C' _- @- w
            puts(c);5 H4 t( c1 V% i! o0 e
            return 0;
    0 `! {' _/ S& g0 c& S2 X}' H3 k: R( W& {/ v& j  z
    ) b( I; w  X' ^7 h% T
    void Union(char a[],char b[],char c[])
    & |& ?3 J' X. f$ i& D4 w& E{( W. _0 S1 ~2 Y; a* B5 \) F
            int flag=1,t=0,i,j,m,n;$ q9 ?' d0 [+ w/ P
            m=L_length(b);
    # {: |% P. {  Y$ E9 }6 t" l        n=L_length(a);
    7 x' N% x& L3 O' D  `: p        for(j=0;j<n;j++)0 p+ s  ]( g) h& N: k
            c[j]=a[j];
    0 [3 ]' Y( }2 s. j/ ?5 m: Q+ G7 J2 v  L        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    9 v3 j' ]6 S  v# S) @" Z1 x" y' f                {for(j=0;j<n;j++)3 I: u; u" ?5 o( _5 e4 i
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了( Y, {0 v* @: N. A4 e& k
                            if(flag) {  c[n+t]=b[i];t++        ;}/ x2 j) ?+ H6 t
                    }
    4 \6 D. s; w6 C        c[n+t]='\0';3 n7 E% S/ L) ^1 n8 N3 t, ~; @% V
    7 l& M' f2 w2 c
    }: D( W: R$ [+ o! X9 }* e, K

    4 k/ q" Y1 X' v0 e) fint L_length(char a[])
    ; q, J" r3 l" A: }) a{
    + t9 z+ i6 @7 S! u        int i,t=0;;
    + T4 w4 N! I1 v( g! d* K        for(i=0; a[i]!='\0';i++  )- f, ?8 {. u; s% @4 ^
                            t++;
      ^# C7 E' a. v: O* g        return t;( D9 Z+ t3 U! T9 ?0 @7 K* b  _
    }
    / V, @$ R. b+ [. I% ^3 z, D# @# ]: y* C" ^
    回复

    使用道具 举报

    慢跑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 编辑 : H7 ^6 v! W4 r

    ! n( M1 ]: ~6 }li2.1yong用指针:
    " Z- C: Q* N; r3 t; a5 \+ Q$ ?( b2 W' U  r7 }
    #include "stdio.h"
    & N5 b4 n9 T3 h: @#include "string.h"( l' a, _* {( y( f( S
    void Union(char *a,char *b,char *c)
    ' ]. P% v! F7 F& N) I$ n' @{& r) |3 j7 }" D6 ?
    char *p=a;2 \  s& ^. }. {
    char *q=b;; u+ y4 r0 E7 q7 ~" c0 _
    char *r=c;0 @3 ~# z# b% I  d4 L; r. @* R9 c5 M
    while(*p) *r++=*p++;
    5 h8 @! B& k& I4 ~- q8 hp=a;
    ' F* z/ j' X. ]+ C5 p  d4 qfor(  ;*q!=0 ; q++,p=a  ). H* B0 e9 V' u0 o% n' O3 z9 _3 e. E8 _
    {while(*p): y5 e* `: a2 q7 X5 N
    if(*q==*p){q++;p=a;}& \- b; n9 v, E4 A  k
    else p++;. T- G6 K% ]' ?1 t+ M
    *r=*q;& m2 l" R$ n* E( P
    r++;
    0 n- s0 I; E; p, [+ R}
    . j5 t7 M% n; y9 |' G9 B; I; y. S*r=0;1 e0 e$ c# B, c+ U) z8 d, S! F

    9 v0 e* Q4 v& H* }}' l1 J' }' q$ V" k: S7 [! ?% e

    ' B1 [" o& z4 N* L' f( c3 |% d# Oint main(){
    $ j8 }7 X) f& u0 B  z& r/ ?- W  I, N3 e, @# n
    char a[10];
    & r& Y) U' _6 x* ?; K8 Qchar b[10];1 R( b# x( ^( @1 ^& m
    char c[20];
    ' X6 X1 M; Z. y* L& P+ h. Fgets(a);+ @$ ~' m/ o) B5 S6 `7 X) O  B$ j6 W
    printf("输入的集合A是\n");
      @) e( y8 f( F- X# T1 B: Jputs(a);' j3 u2 E9 C, u7 {% D
    / H( a2 S/ B! _& ~4 }& j1 n8 b
    gets(b);
    ( P, m+ g3 _4 B* sprintf("输入的集合B是\n");
    & c: B7 e! C5 y2 z8 M( d% |) mputs(b);# o, [( I9 ^/ J  ?9 K! a: ^

    ) p* Y  C' u9 mUnion(a,b,c);/ p; I& z) }& q" `0 @8 k& D
    printf("last得到集合C是\n");0 X) g5 ~1 B2 Z5 i. C0 W7 o) R
    puts(c);. u' z& m( S% [5 D8 ?% E& \6 S& a3 J6 c
    return 0;7 u3 T, P6 C+ B8 ]2 x7 [( G
    }, [4 q; ]# E& _6 L# A9 K2 `. ^' g
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    " ^5 O' v/ S8 a$ e#include<stdio.h>8 F/ p5 t6 W# P" K2 m7 w/ Q
    # y8 x; F. `5 l" R
      struct node2 k9 u5 g; p3 v/ g  W! L/ g
    {
    1 e% D% Q" G& s1 ]        int data;
    & m( G' _# N3 {: K9 w        struct node *next;
    & d5 R1 Q3 D5 R) l; S4 G; }0 R};
    8 m; r) }2 y8 o" U* a+ E//typedef struct node NODETYPE;
    - ^% \) K  a5 q+ ovoid main()1 C, ^1 c7 p, ?  A5 [) F
    {+ k  [. K) T0 k7 }4 \) N: S- F
            //NODETYPE
    " o+ d/ r/ W8 a" H        node a,b,c,*h,*p;5 E3 n4 Q' [# I3 W( R+ ]! ]6 Y; d
            a.data=10;b.data=20;c.data=30;) Y# P4 n+ Y; ^# V) @1 X* n3 q: I
            h=&a;5 n& z' q8 K* f
            a.next=&b;b.next=&c;c.next='\0';2 {! w4 ^% j1 ^0 l" y
            p=h;% c  ]  P, s& i$ r" [. B, ]6 {' X
            while(p)
    3 R1 T2 r1 M9 v' k  {' t        {* h* o& R( l; m9 _" _1 ?- L6 j0 S
                    printf("%d  ",p->data);
    3 T) U1 v4 B7 c                p=p->next;
    0 r2 i9 c6 f+ i5 D# {4 }- _        }: B3 q( B" ^% O
            printf("\n");
    $ f! i+ i, w2 _, |2 M; k}' ~4 T/ y# J% B# z
    $ p+ T! g* B5 P: Q
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    此代码为生成一个链表的代码:
    2 M# r5 b8 L6 m) G6 m#include<stdio.h>) e" k1 R) r; B' e
    #include<stdlib.h>
    2 Q& X, H* ^$ e8 M! {, G1 }4 {3 }struct slist
    / f5 ]& c* T" _+ _: m4 T: b0 |{
    8 Y. a+ i, J6 f. ~: B; v- _        int data;
    & b3 a# S0 z% ~9 C9 ~        struct slist *next;
    - [" X% I* ^9 |4 v% W; l};
    ) N0 ], h& C0 O. T! x  T( `typedef struct slist SLIST;
    , `2 q1 @' p* [9 Y  Q" iSLIST *creat_slist1()
    & V; P5 ]' f' q; E3 [' O- X8 c6 @0 E{# U! Y/ u+ G; F( @
            int c;
    5 n7 H: x% h9 r" i. a        SLIST *h,*s,*r;
    * k" M' `! d( ~! F) W1 i8 j        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    2 J( ?. t  U$ r1 ]$ U1 y" [" O1 C        r=h;
    ) b! U. E" \2 r7 F        scanf("%d",&c);9 q: l1 i* z8 ~, b# g% i! r
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束. Z* ]3 M/ t- I6 P
            {
    ) i) V% r% Q- |& Q6 g% Y2 E8 _- e                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    3 ?/ J5 _3 O* y- u6 h                s->data=c;  w2 F9 o9 S, v' U& [1 f% z
                    r->next=s;
    8 N7 Y+ n: q% c' D/ `. A                r=s;% v" m& i* t3 j* M
                    scanf("%d",&c);8 p2 q% u% A! i; s
             , @4 [  e8 _+ B
            }
    3 N5 J+ A5 j- f5 o        r->next ='\0';
    $ {/ l: @( |/ D" f9 x/ V        return h;3 z; ]2 Q2 I+ Q9 S0 f# U
    }' s9 y2 {2 P6 x  l0 F

    + f) d. R( h% D% M! l4 Z. B% P/*
    * r. E: c; Q8 `; ?! S# Rprintf_list(&head)8 V  V1 z1 m% u! l2 y5 ~( s* s
    {        SLIST *h,*s,*r;: F) Y3 ^5 B' L% M
            int c;/ F$ D  B! a6 r( J/ O1 m* }  d; L
            h=(SLIST *)malloc (sizeof(SLIST) );5 g% |3 c) Z2 h7 E' g9 t
            r=h;; Y4 L- T9 w/ _7 w: z# Z  c1 U
            s->data=c;. L) @) r* S" |  p; |
            //scanf("%d",&c);
    & M0 B* x# P+ E7 b        while (c!=-1)
    ' p; C. o, m& {  f/ e$ U  V! I        {; U2 c8 d4 V' e: a% }9 D5 C6 E+ ~: v0 L
                    printf("%d",c);5 y2 w4 R4 U/ D, U! R; E( X
                    s=(SLIST *)malloc(sizeof(SLIST) );
    : x- c; S5 m2 N6 ?* f4 G                s->data=c;* E) T4 x% q7 J# f- i( A
                    r->next=s;
    8 ]1 f0 c. m  V                r=s;' o! M8 t1 n4 N9 n- G
                   
    . h3 \# V5 d& z4 c* w         8 ~7 @) u0 B% n/ ]* u$ ?$ X8 k* v# }
            }+ ]9 m9 ]9 c: [/ w- ]3 ^0 x
            r->next ='\0';- b# f4 _( u! h' \0 X' i. [
            return h;& E8 P- I, m1 q' e" f/ F8 h
    }* V) D2 N$ L8 X8 p- S# S( J; r5 n
    */. x& e, b( G3 l2 j  b1 f
    void main()
    / n' h5 k+ G4 J3 _' q' [{ SLIST *head;( a4 @/ P, b. q3 U5 Q7 T8 `% q% N# q

    7 J3 Z3 a1 `" D- f5 Khead=creat_slist1();                //调用链表建立函数,得到头结点地址  K2 Q! B5 _4 |% A; S8 e3 b
    printf_list(head)
    : R* b7 ]4 M9 i! S  d2 ~}/ e& Q% w) g$ A0 t& K
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。' h5 N, t: p% J$ X0 S+ Q& H# ~4 D
    6 C6 l* d! C# Y+ H  X. Q+ D
    #include<stdio.h>
    ( E) \6 o. a1 R #include<stdlib.h>
    8 H" V+ a) M( V9 [, F# L ' S* X6 k2 F. j9 L3 L
    struct slist; M2 P1 P8 u/ y6 z$ f& ]
      {0 x7 C, O* v+ ^; G
      int data;
    6 a6 h% A) \; D  struct slist *next;, {/ F1 |, S( [* C
      };& b- z5 U1 c% }
      typedef struct slist SLIST;- a4 u9 O3 L$ \/ b/ t: N
    ( r- ~# X0 v; }* z0 K
    SLIST *creat_slist1()
    ( h3 \9 e- B, T, E" [  {
    3 k0 e) ^; Q* a/ @/ L. }* b& B  int c;% P( n7 j* e6 C' `- }
      SLIST *h,*s,*r;5 a/ t* X. e  A4 f' Y# i
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    : d# u) L  z* {0 f5 T5 h! ^6 A) X) Or=h;) o/ w$ H: G& m! g) u" N. ]
      scanf("%d",&c);
    , Y1 j1 \+ w( ?6 a9 `/ }2 o1 N  while (c!=-1) //当输入的c为-1时,代表输入结束
    + U% y  g( m+ x9 ~7 D  i# x7 N{
    8 x8 L! C7 k& ]/ fs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点* I7 L1 o, `. G. [/ Y
    s->data=c;! x. X* Y; H0 o9 a7 v
      r->next=s;! k1 T, |: D, ?$ K
      r=s;; j0 k1 D8 N, p/ k8 o2 N5 h
      scanf("%d",&c);+ y0 q4 [$ _. Z4 w  T2 Z) ^
    * @+ D; p" J8 K3 y: I/ s6 M
    }
    + Q8 X+ [5 q  m1 K4 q1 s  r->next ='\0';5 G) h/ t# k: _! U( q
      return h;9 J- _2 l% D' W  J* n# m
      }
    ( h3 u' l: |  W3 w0 I  c : I4 @+ L. o' `& ]1 ]( E
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?5 D& U4 |$ m+ T4 F
    int printf_list(SLIST *h)
    1 Q/ y' `! I# Q, q3 Y8 i- s  {
    ; E; w8 e$ g) f& \. R2 F" c$ N3 z# {/ a  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    2 T4 `* U, H" j- [! @ while (h->next!=0 )
    . d9 |$ b! C& g- x4 A  {8 v) Z' ~& l- a6 h1 \. h
      printf("%d\n",h->next->data );
    9 r$ s: H4 i4 ^/ i1 ^( {4 j# Y  h=h->next ;
      x: Z, A) @, r+ g* j  U* v  }8 U7 M6 G: ~0 V; K+ p
      return 1;2 W" j) q- j; e& ^
      }
    / K+ f" P9 q! T+ N& P' {  /**/
    1 D5 D  Y7 a7 X! u! H void main()
    5 f5 e% O" Q' M- N* X& b  { SLIST *head;9 @' W# U' f+ r

    9 n+ \0 S9 f8 }. [9 t, Phead=creat_slist1(); //调用链表建立函数,得到头结点地址
    ' `" Q# G# ?" _1 Pprintf_list(head);8 ~! u6 F/ t! C% F
      }
    ) M+ Z: X# M! s' i7 t- ~9 E6 u8 a' p. s& _2 A# Y

      N. a( S# Z0 L此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-11-1 15:44 , Processed in 0.436327 second(s), 82 queries .

    回顶部