QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2439|回复: 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 编辑 ' p6 b- h: a( T7 m; v2 O

    / W" F; o7 f$ j5 z. x- c% Y, @计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    - o; A! ~6 h2 V: E# L5 X- s刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    ! a- j9 r' p( Y* {0 f8 z! T) D
    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集合。) t' s8 L& a# l' L( Z# U4 W( {
    这个代码是用数组的、算是比较简单的。( V7 v. }( Q! o( J$ e

    $ c" n( g; E% U7 Y+ t#include<stdio.h>* P1 z' p* E! A6 ?  Q
    int L_length(char []);
    - U+ b* T, Z3 s& ^5 z4 A7 b: b& Lint main(){" l; P6 E4 l& J1 X! P% O
            void Union(char [],char [],char []);  C' k, j3 W- @* ~5 Q
    + u$ i2 q1 `( N& m( E4 T
            char a[10];
    0 |6 \6 H& U& J+ Z" ?6 V        char b[10];
    3 D. V* u* a# M( |* Y- c        char c[20];
    + o) [2 h  E) ^; m        gets(a);) [' a  O/ C- ~7 N2 @
            printf("输入的集合A是\n");1 {# y% o2 p, }, w- B* h
            puts(a);% R2 B* t( n7 P$ l' ^

    : A8 }6 ^+ R5 d4 N+ D/ z+ P* V        gets(b);
    4 ]# }) o( [, f- l$ t2 J        printf("输入的集合B是\n");
    ; u+ I8 X+ G4 D) |( v7 q        puts(b);
    1 ~9 A& B8 e5 D0 H) N8 s  P* G6 i3 d& |" F" P
            Union( a, b, c);$ Y; [) L( G  C( p6 L
            printf("last得到集合C是\n");; M- P2 h# z# B; ]/ V0 |" y
            puts(c);
    & E  b  A$ }5 ]) ~        return 0;& j0 S# M$ B& ~$ o1 U9 G: B
    }
    / ]# |3 f4 E( e3 U+ ~* n; j( {( W8 L$ ?- d: f" |
    void Union(char a[],char b[],char c[])  l" c: e# {: {( ~6 H- r1 T3 n1 F
    {( [7 c- m& p- }; v3 u/ x
            int flag=1,t=0,i,j,m,n;0 A; q' C) U& h) J# k9 }/ R' \
            m=L_length(b);; ^) ]* J: Q. a0 n( a9 l1 v6 s
            n=L_length(a);
    7 n6 _8 `4 U: e  U        for(j=0;j<n;j++)% J1 a1 I! t. N. U9 L) D: J& S
            c[j]=a[j];, c0 _9 S3 y" l+ y
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    ) A4 `8 [+ R# ?                {for(j=0;j<n;j++)
    8 A7 p4 W! n; q2 B4 A' {3 x: f' j                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    / d8 a) d9 t1 Z( L                        if(flag) {  c[n+t]=b[i];t++        ;}
    # g& V) N8 a; I- h0 \/ F                }
    ' W& }! z1 j2 }8 v* a" w' O0 u3 P& N        c[n+t]='\0';, G5 D6 e! m/ g: J

    1 U/ H' B# l1 I6 G- p7 E5 f}# k9 e  h) w1 G; B' {; M7 V6 B

    1 j( G4 }& d# n$ F. y. zint L_length(char a[])
    5 g0 {3 E) e* y3 v2 j{: v9 j7 n) G3 k* {4 |
            int i,t=0;;
    % T. |  R# h  j5 G) D7 C        for(i=0; a[i]!='\0';i++  ), c' F- @6 p- G
                            t++;
    ; y3 y# i. @; D! `5 H( n* z, R        return t;+ @, k0 y5 T+ M+ C1 x! O! r+ _
    }
    # R3 f$ R* x+ A0 w) T7 c" ]$ P0 \7 M3 o
    回复

    使用道具 举报

    慢跑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 编辑 5 O4 ^+ a, m& D$ A

    9 D! D4 [! Y# B% ~! \6 Yli2.1yong用指针:: U, P- h& F' _- F: d4 y) J1 X

    . ]( J2 Y7 b5 D# `6 Z! n- p2 Q#include "stdio.h"
    8 x' o$ h% T7 ?#include "string.h"$ p9 A$ t0 U" Y# [0 G: Z
    void Union(char *a,char *b,char *c), C. d, ^* T3 j+ t, p7 a5 B
    {- d" S6 K7 {8 M' ]/ Y% M' l
    char *p=a;" e: x. u0 r  i4 x2 C% O
    char *q=b;
    5 n. E8 h# `& `+ R9 ~% Uchar *r=c;4 R: M  U8 l9 E$ K/ D8 e, L5 z  Z" d
    while(*p) *r++=*p++;" q7 e  z6 k$ ~, M% K
    p=a;
    / i; R9 j2 \. ~& u; e) X. w. Sfor(  ;*q!=0 ; q++,p=a  )
    - p$ m7 {' C* }0 _1 B{while(*p)
    % {3 H: a1 Q4 L' sif(*q==*p){q++;p=a;}* a1 v4 ]6 L/ {% S. P" W$ l0 A( D' \
    else p++;; J" U2 @1 J4 m+ A; `; W
    *r=*q;! Z" }) i6 u2 e/ K
    r++;
    1 V, N4 ^. `, b% V" w# d}
    6 C6 k( B2 F- Q*r=0;
    # L6 q' @7 ?4 e) J) }3 q+ p! o( Y# W# k3 E1 R+ X4 k; Y) i. o7 R* V
    }' [" u) {, r9 r7 r

    * ]2 {4 _) N' X. Z0 Xint main(){/ P5 J; [- V# g
      j" J! E8 x3 ~
    char a[10];# h2 d$ I8 [! ~: E% P9 j
    char b[10];& S. W' |; A* N$ J
    char c[20];2 |0 D2 X% ]9 q+ [( a
    gets(a);
    ( g' t3 l5 v  t- P" G% sprintf("输入的集合A是\n");: I# H' S; P- {3 W/ n0 K: H
    puts(a);9 H8 f; ?2 Z+ M6 J, W+ [

    2 E) w' q6 G3 g7 ~9 G" Kgets(b);6 v- [0 \; L9 p% R: ~; C
    printf("输入的集合B是\n");8 s# x$ P4 z6 f: h
    puts(b);2 b2 t+ I8 U1 X0 R5 Q& \2 w
    8 a5 j# x5 U% A, E0 |- H1 ]1 r
    Union(a,b,c);- X, U& A7 Z7 D% X6 [% B
    printf("last得到集合C是\n");. k2 _& R2 r7 \% S* P6 V' {& A* o. M
    puts(c);
    + l; w- ]3 Z! N$ k+ C' Sreturn 0;
    7 {) I) V+ Z* Z6 P. [, V' [}
    # d* l8 n* u/ q( \
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    7 O: V# S9 A4 @! D; O- `- A#include<stdio.h>
    . b/ @* M( t$ u% I, k
    . c. |3 S% l" ?9 n, w: f, |& W  struct node
    1 [. ^8 ?6 {' W/ |/ m1 \{8 O4 x% r6 S5 {$ Z2 t
            int data;
    1 I& g7 V/ b2 A9 K2 E        struct node *next;4 v8 @/ i  @% k5 g0 v* n" g
    };
    3 _" m0 z! r1 A/ k8 X7 j( M4 w//typedef struct node NODETYPE;9 s* o  X" B! J& J! v( ?; y, ^2 M  \) g
    void main()
    2 c$ J$ ~" k0 P) C: {; a' A. G{! D/ F& M- G4 E8 r, A- n/ ]! w
            //NODETYPE* u# h! D$ ~. f% l) |5 s# ~
            node a,b,c,*h,*p;
    - [& k( t! \+ R; }        a.data=10;b.data=20;c.data=30;! t! l) X1 z7 \  E5 h
            h=&a;
    ) A' B" x: ^+ n        a.next=&b;b.next=&c;c.next='\0';# f# e1 k2 K8 B8 ^/ l5 @1 V
            p=h;- Z, d, d# w  t- L- U2 l
            while(p)- @* T0 r- a1 [* o9 ^: C, l. T- z
            {
    3 e4 [9 f' |/ T) @4 B                printf("%d  ",p->data);
    - ?- U/ R& C9 ?3 u3 C+ h# A' O                p=p->next;* X* {! U, A& G# X
            }
    7 \$ G1 v- s  k/ b0 X! Y! E        printf("\n");' w; l0 D- n& N; M" D6 X
    }* c$ @% ~  m# i2 }0 m# }# G6 b
    4 E* g$ i" j1 E3 @1 Q4 A
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    ! b2 n% |# p3 Y8 e; N+ L8 {, w#include<stdio.h>
    ( f1 F0 V3 D( x0 e#include<stdlib.h>
    - P! a8 |: z$ dstruct slist
      c" d5 N4 D: h0 K- P  ]{
    2 B* m0 N# }; Q" Q  G        int data;
    ! t) F) ]3 [+ O: k        struct slist *next;
    5 E/ k* ^$ f  G};
    + _1 q4 t( {$ Y1 R5 y+ Rtypedef struct slist SLIST;& f# y9 T* Y  W$ Y* w- y9 F8 Y9 k; s3 e
    SLIST *creat_slist1()$ Q, @! w1 V% O
    {4 J3 v+ o& L! \7 x* N9 p+ l& ^
            int c;
    9 y- s0 S9 k% o3 l        SLIST *h,*s,*r;$ B8 ^3 @+ T0 q% N' Q* q
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    , ~5 w" b8 S# J3 X, v* e% H        r=h;# z6 e4 i8 p+ w% y0 ^4 o5 ?% z
            scanf("%d",&c);2 X; |# i8 l4 q2 |( M0 X( r* G4 L
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    % P: C% R1 \6 P+ [  i! c        {' v0 H9 }$ ]% U5 N8 d5 N% g3 T2 I
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    ! w: y; V9 h' L: N7 d+ y# y) A                s->data=c;
    & m- ?. w& v6 D+ m; M# o                r->next=s;* |) G" L! ?' P
                    r=s;
    . W+ K4 W1 O! A  Y- |                scanf("%d",&c);& c7 O% B7 H3 O/ {. b
             
    7 K) R: ^, S1 a! Q        }
    , I" z, G7 u: c2 R( y( j. h5 x. |        r->next ='\0';5 h8 B2 i' N  ^- B3 Y- R2 a" G
            return h;
    $ g) h5 j6 ~  i' x. [4 a( `$ E; @}
    / V" p$ y) {2 i8 t, E+ b& P+ C9 |, C
    /*; k7 u% w8 C! J4 |7 L8 j
    printf_list(&head)# E4 e5 B9 R  k" o+ u& u9 m
    {        SLIST *h,*s,*r;. @% Y1 y) H& k7 T
            int c;
    ) {3 B9 S8 M3 b. G        h=(SLIST *)malloc (sizeof(SLIST) );! D' o* s  ~6 C2 c9 d
            r=h;% @$ j# n, j& M
            s->data=c;; v  V8 d$ b7 M0 ?  F
            //scanf("%d",&c);
    " K% |. b0 {2 r; j% E        while (c!=-1)
    4 X3 {* J6 G: y" g* ~) A& E        {. o2 p+ {% H/ ]* f, R
                    printf("%d",c);- Q$ `- F2 G2 T2 H% ?# H
                    s=(SLIST *)malloc(sizeof(SLIST) );
    & {# a) g* q3 W: |1 s7 X                s->data=c;' K9 H- f5 r; k  A3 U  ]1 ~! \' L
                    r->next=s;4 F3 g" g' E4 T" G; `
                    r=s;
    5 \: v! ?7 {, }               
    , ^. U" X7 ^, I7 Z* `0 l8 W         8 h1 B, W' o" `/ s0 d' v
            }) {9 Q- d2 h. B* ]5 ~% Q+ r/ B" v
            r->next ='\0';5 u( `# N* \3 M) o& R  [
            return h;- {1 O+ b' Y3 L% f, `; R
    }
    0 L$ e7 m+ k! R4 G/ e- G*/: p  H6 }* @5 X: J' P  E% g
    void main()
    # v: p' v8 n/ Z{ SLIST *head;' m5 C" m$ o4 Z2 x$ R
    + L% }7 \- o7 Y' `% W! F( S  x
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    ) q- ~8 j2 A, c# kprintf_list(head)1 Z( i2 q* d+ @! j1 q2 e
    }1 c; K) j" j. I" H3 W0 a
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。; u, f; K7 Y! p" m

    5 w+ K2 ?& y' Z0 y5 V#include<stdio.h>, v% _; `+ x1 G8 g, H# N2 w
    #include<stdlib.h>
    0 ~: J" V- b: u- f $ ]/ L3 `6 q0 O! m" u% q
    struct slist
    0 D3 g- K7 l3 k9 w  {
    " W7 h/ \9 A4 o, X% l& H  v, E! ?" i  int data;% e7 A& @5 t: p2 [" s" }. V
      struct slist *next;
    - ?! @1 `$ q, w3 L) D  };- @9 ~) u7 a2 p4 A  \/ q! n( n
      typedef struct slist SLIST;6 R* _# A$ i" C8 r5 Z0 ^

    * i3 m& ?/ g! [& S+ T9 O9 | SLIST *creat_slist1()( r% ?. E2 z( E* R
      {
    " j4 @; O5 H1 o" x  int c;3 r7 M* ]: I$ D4 X: g
      SLIST *h,*s,*r;
    * j% l2 `4 l8 ]+ M2 v2 d! Q9 }  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    # `% s( E; ]0 Y# I/ a  q9 sr=h;0 N: X  D; d# n5 r
      scanf("%d",&c);8 s0 O0 i+ K4 M1 u! A
      while (c!=-1) //当输入的c为-1时,代表输入结束: V/ ~! _+ X, ^4 _
    {
    - e7 [! {; F* m# ws=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    7 ]: q' R7 j) k0 |4 j# ss->data=c;' w& {! M6 ~1 j% n5 p" d0 e
      r->next=s;
    4 z5 R3 X: v$ z% F% n: A  r=s;) a* o! P; O" j+ {0 `0 V
      scanf("%d",&c);
    : o: e) I' `3 Q2 B: @
    9 v4 Y  R$ ?$ `, ]}
    , I# N9 J3 Q! o3 `% e. K  r->next ='\0';
    9 t- `5 A3 F7 n" b, r1 E7 A+ p  return h;% e  S2 {- X6 ^; [2 s9 Q8 _' O' Y+ d
      }
    5 h( x. ]/ D% `6 K$ E7 |
    . L* [( `: H6 K/ w! v' R: d/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?7 G9 M' Z* E8 g/ a3 D
    int printf_list(SLIST *h)6 a; |" `8 E4 o  I  k9 D
      {
    + W0 k" H2 Y0 L5 a  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚5 |# E/ r1 ]7 s
    while (h->next!=0 )
    7 u; Z9 I0 |# Y6 [2 q' B! u7 v& ^) j  {
    5 y5 h! p( m3 A1 H/ b+ K0 ~1 Y* Q4 |  printf("%d\n",h->next->data );
    4 z8 }) o# a; u; q0 E8 a  h=h->next ;( r$ [! V/ d( q5 }8 m
      }
    8 ?# G5 f9 w7 W# D  return 1;
    # x7 f9 K; A7 J6 x& S  }
      r' _6 k$ i, W+ I2 m+ Z5 Z" Z  /**/
    ! b6 F; v! p" O4 B1 `! y; _ void main()9 Y2 o3 j1 m% l8 @6 f' E
      { SLIST *head;
    ; j% q/ _9 X& t 1 `9 P$ {0 p( W! \
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    6 B) B6 x- }2 \5 ^1 s! |8 rprintf_list(head);
    ( h. Y8 E' P6 f; k  }
      I( h- V8 z0 Y( A4 o  q; e7 K) Y% ]9 q$ ^2 c7 E
    9 Z' P6 u) z8 A7 g. a
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-3 05:46 , Processed in 0.614720 second(s), 89 queries .

    回顶部