QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2353|回复: 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 编辑
    % c8 e$ [$ X7 ]
    6 z8 D: ~5 @! @2 m* @- w计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    ' u+ o5 ^) ~3 J& g- j* ^刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    # X- T# o5 g7 a  Y7 a4 R
    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集合。
    # J9 x2 @3 A) }5 g! j这个代码是用数组的、算是比较简单的。* T) |) ]1 ^7 E; B

    . t+ \& }- ~; k" `#include<stdio.h>* D) g2 k& y: v% Y! X- k/ Z
    int L_length(char []);7 w% f; b) f: e3 P
    int main(){6 p( x% S# ~% E/ P0 W
            void Union(char [],char [],char []);$ j* s0 V# T. l: a3 R1 c

    ( B# G( m0 X1 S  b8 m' ~" y        char a[10];, d) u' F% Z, S" s1 D
            char b[10];
    8 |' c5 Y0 O+ b3 a        char c[20];
      n* N2 u( \3 Y        gets(a);& G7 M1 B% v, ~6 y7 o  {" N
            printf("输入的集合A是\n");
    0 q% B, d4 |: B; o+ _        puts(a);
    7 S  z- H% L7 M: h/ R4 ^
    8 e8 y3 |. k2 R. ]        gets(b);
    $ m" l+ ?- _, U# o" V. {        printf("输入的集合B是\n");
    % ~. |) p/ I5 s0 k0 C        puts(b);
    4 Z" Z: y3 Y( @) V% C
    2 Z  i8 x. X8 J  ]        Union( a, b, c);
    - b8 |5 l) Y4 r5 i' N; g        printf("last得到集合C是\n");
    - W0 Z# x9 F- k        puts(c);9 a+ S& a/ F. p8 ]+ [( P: F' x* h
            return 0;: W( J+ U4 L& e
    }/ B& e+ u5 V, p' k
    : g) `. V" ]) C) f* X+ w' u+ X
    void Union(char a[],char b[],char c[])! k. E6 c) S' s% E# c* A
    {% h' a7 Y. c  [( c! a& d
            int flag=1,t=0,i,j,m,n;( c( E5 F. t7 b0 Z, T
            m=L_length(b);/ }! U$ m: V* e0 A
            n=L_length(a);8 l9 R+ P  H, S# w# l( j) a
            for(j=0;j<n;j++)
    ) {4 B0 _) U* _. G. U5 Q        c[j]=a[j];
    - N+ `; x& p% Z5 V2 q        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    $ c9 f8 |5 p9 j                {for(j=0;j<n;j++)" c5 [8 v6 [; ]& }/ a
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    ( F+ ~( b1 i$ n; [" u8 {2 h- u                        if(flag) {  c[n+t]=b[i];t++        ;}
      r0 b6 C% z) I3 f& [9 a2 `                }
    + r: |8 F* G$ ?4 @/ G  }        c[n+t]='\0';2 p3 }" U, b( }- n) L
    , X+ x1 ]9 t5 H+ `/ U
    }1 D: I% `# k9 }: t3 S$ p
    8 V& r' \2 j& L% \2 d: s0 ^
    int L_length(char a[])  K0 ?, w7 n- Z. Z2 u$ I  h  s
    {4 o1 `, n: s5 S
            int i,t=0;;% {$ I, E1 }1 o) T% H+ }* q* h" c. O2 [
            for(i=0; a[i]!='\0';i++  )) ?$ Y- d. g+ _( q- S. B% F
                            t++;
    2 ?/ x! l% U4 ]% m        return t;
    . c" K2 f/ Q7 n" ^4 g} 8 A+ h" _8 x" O) Z4 e# z
    " J4 a$ y% f3 h5 V) i) a
    回复

    使用道具 举报

    慢跑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 编辑
    ! I& ]4 e) j# a' a& t# W2 L
    ; C8 s# J1 M! m+ w& Sli2.1yong用指针:2 a: e9 ~+ B' V- f) s4 _" q

    % n5 P+ X- S+ f#include "stdio.h"% d0 u2 b$ g# I" c
    #include "string.h"& U8 Z* Z0 ^* M% y
    void Union(char *a,char *b,char *c)
    " ^( G. G7 s: c, f0 N+ c' O* r{
      ]: z8 H# f- j* V5 ochar *p=a;2 u" q8 U; L7 z# o( J) x: u
    char *q=b;
    9 y' K$ _$ X& s/ mchar *r=c;
    ! @/ @3 E4 u0 J1 B3 M: B; U* ~0 I/ Bwhile(*p) *r++=*p++;
    ) y; `9 m/ J+ T$ r* k: @6 l( Ip=a;7 p3 H2 C' |0 B
    for(  ;*q!=0 ; q++,p=a  )
    : C+ [/ `# T: ?% X( H9 t/ ^{while(*p)
    . }+ L* c" H5 Q* c3 |% sif(*q==*p){q++;p=a;}
    * c$ H# P6 H, w3 p9 l+ o4 |else p++;+ }; a" N4 F/ g& {1 |
    *r=*q;
    " o4 F. ~2 A9 p2 D7 h" F( Vr++;: ], t+ z% m- v6 c* e8 H
    }
    3 d) g- \1 [) i8 T' @*r=0;- l: E: }* P/ D# S( J4 y& G' b- g

    ! n6 @. W) K' Q}
      x6 O0 O9 t- W8 a8 T5 W; Y7 `$ \$ |
    # n3 i0 d3 X) A- s2 lint main(){
    7 S0 N- I& S6 L+ M" b3 F2 r# [$ r+ ?& H
    char a[10];
    0 d4 w4 }. h6 n: F- g6 U  \# U* [char b[10];9 e" w0 I, t$ Y  h
    char c[20];
    % x# t* o  u) i3 u  ]gets(a);9 o6 H/ `. J4 U% C- V4 g
    printf("输入的集合A是\n");
    ; P! K2 c" A' G0 _/ ^puts(a);
    + J& R$ Z/ l1 C' D: G$ V) n! C  L' x- E
    gets(b);
    3 I! y8 p( i( A$ N' F0 Oprintf("输入的集合B是\n");  @! f, o1 q# }( j- L# ]5 i
    puts(b);0 o. \$ }5 }+ O; p6 A
    9 w; l9 o' h. ?1 _5 I% `
    Union(a,b,c);: {8 w. L( f; ?& h
    printf("last得到集合C是\n");6 Z8 }4 u9 F2 ^6 X- S) v( s4 `$ W7 C
    puts(c);
    - f7 X) }9 H8 L% ?; O5 Dreturn 0;0 J4 \+ d8 Y7 |  `! P1 w
    }
    ; D3 z9 ]! C) k' |4 O2 t9 s7 P
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:1 F8 C* G- l7 Q
    #include<stdio.h>
    % \/ d" e+ t# H/ T
    % W" {7 ^( _  [  struct node2 s+ [2 t2 n1 \* B
    {+ T5 O9 @: x+ S1 N0 @
            int data;% c9 x& W1 G" o1 [
            struct node *next;+ N) I: F' H$ t$ S; a+ N( V
    };* A# m" {/ d; W
    //typedef struct node NODETYPE;- x3 [# n! T$ U; K
    void main()
    * D0 ^; b8 M6 b+ |{! Q( v! W: Q# ]+ t1 }! ^
            //NODETYPE
    3 g1 ^4 b  C" e8 |+ R: ?, T        node a,b,c,*h,*p;: e/ c" g9 b: g; g- [
            a.data=10;b.data=20;c.data=30;. W  y2 o: f  _
            h=&a;
    . {- \) T% z. Q! W8 P        a.next=&b;b.next=&c;c.next='\0';
    ' f2 N" @+ x4 \4 i        p=h;% h6 {" ]/ g# i! U7 |1 e
            while(p)
    * |0 g* C3 t8 s/ L) d" l, _" G2 s  D! [        {
    ! G( X% Y4 F" I, T# r/ Q1 v                printf("%d  ",p->data);) ?( n% U9 t" e) b) i- y
                    p=p->next;6 K6 b7 [" Z* |! ?5 t. T1 [
            }
    7 H! i+ S* q/ L        printf("\n");) k) ~& v0 ?4 c/ a
    }
    ; [" V+ M5 b& B; j' l: A, g
    7 l1 e! V, I/ B' S" ~5 D+ d8 I这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    ; Y1 [$ z5 V+ N4 F6 B#include<stdio.h>" U) Y7 U5 I5 _% h) k
    #include<stdlib.h>
    ; n: X2 L4 U4 W; z' z8 wstruct slist
    - c8 }, a% H2 ^% e{0 T9 L: {" G# ]
            int data;
    8 s; v+ Z" T& t! l8 }) e  R        struct slist *next;) l& r+ j) Y6 j1 b% ^
    }; 2 j4 O" R  e3 n& E& X9 T6 W: M
    typedef struct slist SLIST;5 ]. h, [" ~( d& W7 W" b& l8 G
    SLIST *creat_slist1()
    5 ^+ n% P# v+ Y6 [1 V' P3 O{9 c& j' i+ z. w& W6 W9 }$ O9 s+ ~
            int c;; B2 f$ `- Q; B8 T0 f  S9 X
            SLIST *h,*s,*r;
    ' ]$ V& \3 o0 q        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点+ \7 L% ?* h: j  J6 Q' [; V
            r=h;
    5 V4 b- D$ C% Z( j1 y        scanf("%d",&c);9 P" }0 u! G4 Q' a
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    5 Y: c+ z: E0 A% H        {! D) q  c* \% E
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点# m9 x3 ?) k0 f2 X! ]- j) o
                    s->data=c;
    , R% G- F' N. T                r->next=s;
    3 h3 n- T( k* h2 X- l: |                r=s;
    & I% z9 g% i( _% Y                scanf("%d",&c);' I/ P% g' M# ~  l" Z, I
             & c8 `9 k0 _: L* Q8 ^; T
            }
    ' _$ c" R3 Q, L( l- X; H" `        r->next ='\0';
    - \) T! J4 @" r. y4 H$ u/ C        return h;
    9 t1 s1 s% `% H( A1 f& i; m3 C2 e}
    6 K% ]" R# l/ m1 w
      w1 O! `  C' i/ [4 G$ \+ j/*! A+ \* o8 h( J* ?( `# A
    printf_list(&head)
    ( X8 Q) V6 C7 R" q{        SLIST *h,*s,*r;
    ( q; \' N( f0 A        int c;
    ; P2 n9 V5 e) R- `' D        h=(SLIST *)malloc (sizeof(SLIST) );% b2 b" X) [% j/ b8 b' R
            r=h;
    4 U* S" {3 A. C' k( Z' J4 P& B        s->data=c;
    5 h. x4 w- W. t* ^2 W        //scanf("%d",&c);
    ) F2 S8 `* s, l, y3 }" }, o        while (c!=-1)5 X1 L' g. S" F% I( `
            {8 L# b5 W6 e) }, J2 t+ F  o
                    printf("%d",c);
    & K) w8 m5 V: m, n                s=(SLIST *)malloc(sizeof(SLIST) );; d& y7 g! s; K9 z
                    s->data=c;
    / Z0 e$ Q& ^7 Y9 W# {: \! l  V                r->next=s;
    - r- n% n. C. H                r=s;
    ! i" N# b. p: B               
    : M% U. g2 `9 d7 @7 k  ^# g% B* T5 I, @         . {2 `2 ?8 }3 y& Q' Q3 K
            }$ U+ ?* f, l) E* ~; V( _
            r->next ='\0';& g$ u1 r1 R" C1 L/ l0 w9 Y
            return h;
    , F' f4 k. }4 Y, e+ `}" J# k) A# D+ i: r2 }
    */. `% h) e5 |9 p# c3 @& {
    void main()
    * ?/ J1 R' N5 x9 G* n! ^8 u{ SLIST *head;9 n& B, I( M0 L
    , a6 I  H' A1 X6 R2 A6 G
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    1 P: L/ b1 N; ^. aprintf_list(head)
    % s; z/ p" v4 P}
    . [, F  w' j2 J/ {
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    - p- e& b0 v. @# z# ^# ]5 `) G( u4 D# m& K+ \
    #include<stdio.h>
    " U1 `- e! H6 `3 @3 } #include<stdlib.h>+ X( Z1 `5 b+ g

    5 d% o$ j4 b1 C: }  e struct slist- q7 |+ P, O6 D
      {
    ) M. _, @8 n6 R1 O  int data;
    5 m3 [9 Y1 e4 q$ H8 F  struct slist *next;/ w' D: H- Z; Y$ z. N# ?% k: T
      };) l% h, v9 @; r
      typedef struct slist SLIST;8 Y/ {  j& |/ E6 i# j8 Q

    , ?$ J, ~' _* F4 s. d SLIST *creat_slist1()+ a! a5 \9 a% L9 E; R5 c
      {0 v' V9 o. N' I7 V  n- r
      int c;
    : N) D! z; [! c3 ~% h5 W/ J) G$ O  SLIST *h,*s,*r;
    : r6 Q/ e2 _" b+ @1 H  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    0 t/ Y* w6 U; @% T0 T$ [, }; m6 n, Or=h;
    , ~7 T9 r; j8 w3 R( x' o% \0 G  scanf("%d",&c);
    ; I  K! P( y2 R  while (c!=-1) //当输入的c为-1时,代表输入结束
    ) ]2 Z" P  J* V  b% v{
    1 e# H! W7 n# e9 ?- u$ }s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    ; N# O# ?! d0 l% Ts->data=c;
    5 |. s& w1 }2 x  e  r->next=s;
    * p* B  u* @- F+ C  r=s;8 ?/ v5 u7 W6 h; O+ `- Q3 _
      scanf("%d",&c);
    7 c( i; O5 w& d; S) V# [
    ! S7 V, S+ m7 ~$ A0 h1 Z8 X}2 C# \  K/ ?8 H7 q/ p4 @
      r->next ='\0';/ n+ g! N0 P* \% i
      return h;
    # h+ i( n/ `4 g2 M* w* v  }
      o2 H8 x9 ~# @; {  u4 v
    3 o! _# g; i9 ^2 u  _% `# d/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?! v" e2 a. w' C6 B
    int printf_list(SLIST *h)
    ! g% g( d1 |. G) p5 I0 n( q! q  {
    . \1 V+ m  q! R5 o  i  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    0 d# c+ y/ m! V# i# T: C while (h->next!=0 )
    + ?0 `( G* R, k3 V: ?% k  {
    ' {0 R, C0 V9 _& U% a% d  printf("%d\n",h->next->data );
    # L- j6 V  ]5 b6 N4 N. v! Z  h=h->next ;
    , ^* D3 m, Y3 W& }1 V" m2 f  }
    " r) f, x1 p' J- B$ w$ n  return 1;( S: P$ s+ X+ f
      }: ?) T) W; u' _$ T4 y
      /**/# p' G$ k3 x, h% m" Y/ R
    void main()6 y1 x! Z% f, e0 a9 ?# b, I6 V
      { SLIST *head;
    5 a4 u( a7 E# ~  P4 X! q
      ~+ Z3 W8 l& Khead=creat_slist1(); //调用链表建立函数,得到头结点地址. n0 d+ o8 i# s3 B
    printf_list(head);2 I" @; Z% ]: v% B
      }$ d/ k  u$ o) X' ~

    0 g( o% [) X6 K8 N, W0 k0 R, m: R/ ?* N4 A" p) A8 R9 A
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-5-29 05:34 , Processed in 0.390872 second(s), 90 queries .

    回顶部