QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2411|回复: 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 编辑 3 r+ [1 ?$ |9 s5 P' q  I
    4 x. E' {) A5 `7 b% n/ R
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    & H* g" G. }* `8 p! d/ r刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    " r. q5 M, K7 j/ b
    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集合。+ \3 E9 s  C9 J$ f; b2 G
    这个代码是用数组的、算是比较简单的。( t& J1 V* F9 @- @4 }+ ^7 l
    / S: Y9 [  U4 x" R4 m) G
    #include<stdio.h>
    : o: Z: z  M7 Q( g+ Nint L_length(char []);
      C4 \3 j. ?- A* ]+ v3 Kint main(){+ U  r( z, }& {9 g
            void Union(char [],char [],char []);6 O3 U% m( y$ b! v
    ) N% B/ U( s& t/ D- P6 R
            char a[10];
    - K/ q! n- }: V  z: K2 R5 Q        char b[10];% y$ i+ Z0 k0 D+ |( o
            char c[20];
    2 c( ~" H9 W; w& b' g. Y        gets(a);
    3 r& _  y, }" W% ~& W        printf("输入的集合A是\n");
    / k  |1 y) n5 t* A4 z8 h( q* Y% j        puts(a);+ v# j& @+ z+ b' H! Y; h
    6 [% X: `" c, v, h$ _+ J, m
            gets(b);: m: w0 W" c- `0 W' e" u
            printf("输入的集合B是\n");5 Q$ G+ r+ I7 G
            puts(b);
    % r  |# @! Q! ^5 n! z1 g4 h% @6 E" ]# C+ J
            Union( a, b, c);
    2 o4 m$ j( q9 G& Q/ u3 l/ W        printf("last得到集合C是\n");1 I+ K! D6 q" |
            puts(c);
    ) T! z: E8 r2 W5 ?' ^. R        return 0;& L' o* l1 \: B/ G, J( c
    }
    4 t6 J5 S7 t! C; n6 j# l) x( |' ^$ U2 g" [
    void Union(char a[],char b[],char c[]). p6 v2 y& t/ |+ c/ _# c
    {( r. R, E* ]1 r8 u* y( S% ^+ U- q5 b! }
            int flag=1,t=0,i,j,m,n;
    & s" n9 `/ w1 A        m=L_length(b);) D+ k# h  D6 }0 e5 V% l
            n=L_length(a);* ]3 g9 R( H; f/ g% v2 @4 ]: ]
            for(j=0;j<n;j++)+ g; c) J  l" Q+ g9 q1 z3 g
            c[j]=a[j];/ U, z7 K2 s7 f9 B
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;- ?6 Y8 P! L2 b! d; l4 c; m
                    {for(j=0;j<n;j++)
    0 W( x) T8 m! w# l2 g, o                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    4 f) f+ u5 P, D5 c; K                        if(flag) {  c[n+t]=b[i];t++        ;}
    4 H3 P' M$ D9 w0 M+ X                }1 n; B5 w  K. M* G* m
            c[n+t]='\0';1 Z$ \+ u* d, Y

    4 _$ |2 x% h5 Z% c+ u8 J/ x}
    ( b* p$ F, ~  ?+ Q+ f. W
    : Y7 [- ~/ T  ]8 ~+ Nint L_length(char a[])2 n1 c+ L: V: f! T! }
    {+ f* Q7 D& k& }, h: p5 X2 s7 E
            int i,t=0;;9 s0 s* Y8 m2 K1 Y$ f
            for(i=0; a[i]!='\0';i++  )
    2 ]) _7 R2 {3 |; y$ I; z                        t++;- q6 w# h! L# q- h& `
            return t;
    1 o. h' G; r  w/ t' `) Y4 V' ^}
    4 Z, G% o8 T* P6 |! p! {' C) G. B+ @; P% R
    回复

    使用道具 举报

    慢跑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 编辑
    4 n' @# m5 a( g; e; c8 ~/ G$ B6 w# p  Y8 v3 Z
    li2.1yong用指针:
    & h) F$ ~+ C1 a. r9 Z1 V# C% [# v4 r% [( w
    #include "stdio.h"
    - L7 s) P& }7 ~- s" |#include "string.h"7 p7 I% u1 ^8 M! y
    void Union(char *a,char *b,char *c)
    , m) O5 Y. L* L! S/ O0 f{
    1 `" I( B& Z! |+ t. |char *p=a;
    / l& w1 D7 ?# Z$ P3 L% ]* Fchar *q=b;
    7 v6 t1 }) Y, ]6 y2 M( R9 t: O8 Ychar *r=c;1 b# J$ g& O5 H0 s# U1 F
    while(*p) *r++=*p++;* {8 m# H( C' E3 f% x$ n3 I
    p=a;
    : y/ h9 V" ^- z7 [; ffor(  ;*q!=0 ; q++,p=a  )' F* z  m# o' I
    {while(*p)/ N8 C! S7 M4 Y) J+ z/ D
    if(*q==*p){q++;p=a;}
    + g% m5 O, ~9 z0 H' H, Eelse p++;0 s  K: {7 W& N0 s
    *r=*q;9 N0 m+ T$ h  z' x( C
    r++;$ r; ?  B& ^1 v3 F
    }$ J' p2 E0 v' |, d5 ]  s; u
    *r=0;
    ' p: z( B% b! U6 @, ]3 i& l) ]) z6 a* x' p8 u
    }
    & L: [+ s2 L% n: e) G" G$ m6 J7 F  _. ]# a
    int main(){
    $ ?. A, M: B" j% B
    & k' V% G% U( G+ T5 Pchar a[10];
    6 F4 y' D1 b2 I! C1 B; ]2 a, |char b[10];% O" c/ x7 r+ W; m# _+ Q
    char c[20];
    / o( a* _# i+ w- |gets(a);
    ; a# I8 O. Y" H- Q0 @' [% \: vprintf("输入的集合A是\n");" }3 c1 b! _1 m8 L9 i
    puts(a);
    ! \; I9 v, i( v7 H
    2 t4 ]6 N. q7 b- @4 agets(b);
    , d2 i/ q* y* e4 Y" bprintf("输入的集合B是\n");, H* k5 I" m% c6 q6 ^
    puts(b);* k7 E! _! z9 V8 J( b

    , T& ?8 a# k8 MUnion(a,b,c);/ M, B9 l$ R" H- B+ \. E+ H
    printf("last得到集合C是\n");) z; S+ s8 K4 g9 ?
    puts(c);3 q8 t2 a2 {# Y# t7 f) }
    return 0;
    * u' \  G# S5 W9 S9 `" h4 K/ B}8 T4 s" B. `% l# ]$ R/ ?5 H
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    ( U) [- r' l2 L$ f#include<stdio.h>
    1 N4 p9 R, D/ q$ A1 A+ K6 e' G% U5 L
      struct node( S( T( T% ^" j, p% B1 `, C. Z
    {
    + R' G# Q5 b6 m8 R3 S8 G        int data;# L# S# Z' z8 |3 E& z' W
            struct node *next;
    6 i1 Z3 b1 s8 {6 o};5 c4 ~+ W; f" `1 D& z- b
    //typedef struct node NODETYPE;
    ; x, s6 F. n. V( o# Q, ~void main()
    1 t. L( V  n) t5 }{) O7 W: u: O3 T9 h
            //NODETYPE4 p3 D2 H; ?0 K8 @, Z" F0 T7 d
            node a,b,c,*h,*p;
    ; d/ s9 ~0 e" b9 Y8 w        a.data=10;b.data=20;c.data=30;
    / u6 c+ t& R4 w( ~/ M( \. c        h=&a;- F9 i; O0 T# x8 h( q2 p$ }, H
            a.next=&b;b.next=&c;c.next='\0';! ]7 [- ^1 O) Z9 g+ w9 b+ I$ c
            p=h;: R. G) ~( R0 t9 H' u
            while(p)
    ( F8 H3 x$ f( V        {
    5 x2 x8 K. u( K& A) H1 T( v                printf("%d  ",p->data);* t8 m6 K6 m& x' F. S9 ?& M* j
                    p=p->next;  b" Y6 b8 `1 ^$ X
            }6 Q1 E( a# r9 u' Q, ?- u/ @# \* u
            printf("\n");
    * E, i7 f/ ^& u* B$ Z7 \}/ f$ `/ a- C9 t# `5 u$ v+ R  J
    2 |+ x2 y, n% _2 }2 {
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    7 K1 s+ _3 |3 o" i# C" e#include<stdio.h>/ _; W) D: m0 c2 ?. N
    #include<stdlib.h>
    # q! z3 t, G" P5 T& r* B3 z' U2 ]struct slist. \% x1 O4 k+ A% j. |6 u
    {
    ( o3 w/ e( y6 V/ N! n$ ^        int data;
    9 w/ q+ r. N9 l7 p- ]% C! x6 H        struct slist *next;
    ) z/ c8 {* M& Y% }. h};
    ( t5 ]" Q9 ^1 W4 u; t4 m2 x. Itypedef struct slist SLIST;
    9 z4 h4 l3 S7 W$ BSLIST *creat_slist1()
    0 r  Y' U/ M+ b- _# ~8 K% B{: Y( S! ^* S2 u3 ~( E* ]0 A
            int c;# _; @" ~, l1 x6 g
            SLIST *h,*s,*r;
    3 I6 ?1 U. Q  E# j        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点- P/ {( _# c1 U- C
            r=h;* M+ W" r9 W/ [- {: @! l2 |
            scanf("%d",&c);; Q' X/ W$ f% [' o1 y1 I4 j
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束  o; V, U2 M" T& m
            {0 j/ D' v0 e. K/ @
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    8 L3 h5 x- [0 i5 @( a& z                s->data=c;
    " X3 H8 n" ^1 y5 m) C. m                r->next=s;( l. p$ o2 h- A( U' X1 {" I1 G
                    r=s;  N$ K8 V" g; m0 Y8 ^) `) \
                    scanf("%d",&c);
    " ^) M( @; D( U" t8 [         
    9 e, t. Z4 I6 C  _" s# {        }& s7 b' O. W9 B* u3 {5 ~3 w
            r->next ='\0';
    . Q6 _, l' x- m1 T        return h;( q4 m/ h) g) ?% H$ \
    }: j% @4 C0 H0 G' @+ ?- c, ]
    ) s; r( B9 U/ V; L! I  G- z9 o
    /*9 I' Z" N0 e: B* R3 W- d9 g
    printf_list(&head)  A0 F, {1 v/ A8 @" o$ c
    {        SLIST *h,*s,*r;, _# e6 d* N/ ]$ B
            int c;7 x: `) u6 h" v5 P8 J
            h=(SLIST *)malloc (sizeof(SLIST) );6 {! n9 `! H% b4 M) I3 v
            r=h;
    1 M0 q5 p" u" l" m9 O& j# d  Q1 d# R        s->data=c;) @4 V! z5 G* N5 \+ D6 M
            //scanf("%d",&c);
    6 o3 d" Q" g  u4 |* t% f1 v; j        while (c!=-1)
    . Q7 T/ q5 O2 c2 C* |9 ]2 x        {
    , F3 G- v( W2 ^; z                printf("%d",c);" T& {* n) V3 {! h6 o( H
                    s=(SLIST *)malloc(sizeof(SLIST) );
    " i/ r- n$ {5 G, X0 d5 A                s->data=c;
    ( I; t9 }7 x% F( Q                r->next=s;
    % X4 M$ c5 ^, \. H                r=s;7 X  f! [: X' F  a. L  _& E
                   
    ( n. r1 M+ Z5 a- l4 Q( U. w         
    : d# T6 r* O% s        }' G. v( `4 @! C+ W1 Q" n, M
            r->next ='\0';8 H5 n& N  K* a  H# H) h
            return h;
    & i1 v/ X+ i3 A$ `. w6 [2 _& a}  M% l. a: l$ \, s4 G/ u2 `3 c. R. m
    */# I- Q) P7 c& R1 {0 {
    void main()  o, W7 P; I( F5 A/ R5 j3 U& m
    { SLIST *head;
    ) D9 V' e/ l# m- A" \. B6 s/ i, f% ]5 x  y* z3 q5 K, |
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    % I9 J6 B2 J  V/ I: Iprintf_list(head)' w2 }3 g& S( }# L4 Z4 n
    }" d9 U" ^) l  w5 O( T7 c% _6 w7 i
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    / c& H3 G3 Z# e8 m9 Z' a* N" H. O! X- C4 {9 z, `
    #include<stdio.h>
    4 i8 h- N5 G& f$ S3 ]( h #include<stdlib.h>) D, J+ h4 J* K2 f$ }% D# \

    . `7 b' u. S1 G% i/ R struct slist
    % `/ _3 O2 T* E  {. {  L  {8 z! g- }# F3 H# o6 D
      int data;
    - [% D) G8 W1 p/ {  struct slist *next;
    4 a5 |$ p5 x$ |7 h: K3 I$ B  };; Z6 o; L6 }/ H. K, i$ D# a- [
      typedef struct slist SLIST;8 f, V. B3 m1 M% x
    : u4 ?# E. q3 B7 C4 K
    SLIST *creat_slist1()" C6 P& R9 u* X- {* h+ i5 |
      {' d8 N) J. |6 P9 ~2 U/ O4 p2 ^
      int c;
    / t- u* O+ v: R* G- m+ h0 i, T  SLIST *h,*s,*r;8 q! D9 I/ D: W0 k
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    ( S5 ~, G+ ^, K1 y& w  d5 Kr=h;0 {, r) S, o/ N* Y
      scanf("%d",&c);
    : a) n5 I9 G1 b# w  while (c!=-1) //当输入的c为-1时,代表输入结束% {) d/ P: W* m( g" \
    {7 `) |, T! P: `( O
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    / v9 E3 ?1 X  ^4 R+ t" v6 Ns->data=c;3 F( v- e" }  p0 i- i9 A7 }
      r->next=s;2 a, d; c; H, c7 M5 ^3 Y
      r=s;4 C. S  F+ Q! N  H1 S( F! U6 j$ T! H! b- b
      scanf("%d",&c);
    ( _- Y# i' }) [* m& z" f! R . v+ r6 Z4 e" g; L# v; J
    }6 A9 \, g& W' X" S
      r->next ='\0';; `' u& E9 D! m  l7 o
      return h;/ P) f7 B9 e' W( I
      }
    5 N3 p) t& O& X+ i( v8 {7 u % q8 T# L$ k( Y- Z# v2 b' ~1 K
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?) P: Y0 @; d5 ?1 }
    int printf_list(SLIST *h)
    4 [( A" Z) }* d5 e  {* X$ k2 F9 r  a0 @
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚: }5 `0 m. G3 z9 h2 e
    while (h->next!=0 )0 |+ d( B9 z; f% X/ H
      {
    * B  n- L! [* b) u  D  printf("%d\n",h->next->data );! b" P/ t* W' k* ~; T7 n) y& c
      h=h->next ;- I7 [! L& I9 R7 C. `
      }- Y- O: Z3 a# O
      return 1;5 q$ Z* z: Y0 s2 s: a  j
      }
    8 R; @0 L* {0 k% x. X) f$ h  /**/8 F( i1 }9 }2 _! C) c
    void main()
    3 A) }( [+ H' R% \  { SLIST *head;
    & k6 e5 m( V9 k; V, _1 E7 M, D . b( n: H% Y6 m( _& S
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    / ^! v, W) H$ v* ~1 _* ]9 u, \printf_list(head);
    ; j8 O) Z: u) Y6 b- ^  }: U) T! S& |5 ^& X% g) ]9 u

    ( h! J! c7 b9 w. Z, p8 _% n! r' z0 e/ L3 N; e
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-20 00:26 , Processed in 0.490416 second(s), 83 queries .

    回顶部