QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2304|回复: 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 编辑
    9 {: s% x4 v% g7 f4 k, p" H. t5 j
    8 e. D; g; g' Y' E计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。3 x% L  B- h2 x5 c. Q
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    + g3 _5 W1 w* G
    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集合。* h. Y6 b( m) x: ]3 A; I
    这个代码是用数组的、算是比较简单的。' j( \. O- B) \9 b' Z7 e

    7 l; L; n& g, e: G/ c#include<stdio.h>: g3 W$ _8 `, O) c' h
    int L_length(char []);. b( L3 U; c3 F/ Q( t
    int main(){0 a& H( z: C2 P. q
            void Union(char [],char [],char []);" [, Y9 p9 S+ C( p6 `; I: D8 S

    ) \7 u& _6 W/ o  B" E0 P        char a[10];
    . q* K7 J8 K; x8 g6 H        char b[10];
    , ^# {1 ?  X; f        char c[20];
    " M  l3 r+ h; v        gets(a);1 V* G" N" I2 _! C% x
            printf("输入的集合A是\n");
    $ x4 H/ c: h! n' A- Q        puts(a);
    * t: ~/ L% A" x
    + d* F7 h7 Z3 z+ y4 O+ ^        gets(b);) V" B* c0 N# B% M( x
            printf("输入的集合B是\n");5 D8 F, V0 p, b+ ]) t
            puts(b);8 m" \7 P6 i9 @* i1 q5 ]
    - \0 _6 _, ~  \# J4 Y
            Union( a, b, c);
    : [/ u. h9 a9 T* h2 I5 k        printf("last得到集合C是\n");
    . E4 P! ~$ Q0 o( y        puts(c);
    7 z( O5 F8 C* E. Y9 K1 Q- c* z2 G        return 0;
    . K1 i9 C- x4 l}6 W: K/ L9 F  e  P% x/ r8 s7 A, u8 D
    % _& u) i4 c$ u, Y& t3 q
    void Union(char a[],char b[],char c[])
    5 Q) g4 M# f% U( [" r- t{
    $ `0 m% ^4 o0 s0 [' N- \        int flag=1,t=0,i,j,m,n;
    4 h5 L6 r" i4 \8 T6 z( k2 G8 t- e" ~: y        m=L_length(b);5 r$ k* \1 }& c- ^2 B( ^& C
            n=L_length(a);- [  ?9 J# \( i/ ?
            for(j=0;j<n;j++)$ G0 G  o+ |) t
            c[j]=a[j];
    $ _+ ?; P3 K$ |( P7 s        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;" K2 z9 X$ b$ b( R1 Y
                    {for(j=0;j<n;j++)
    " p. P3 h2 t' ]6 {3 c  B6 F                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了+ M2 h7 B# k- P9 {8 z
                            if(flag) {  c[n+t]=b[i];t++        ;}
    * _# _$ ~0 x9 o- T: k/ b7 f7 @                }
    9 C0 {6 X# {) b4 x! q- I# I        c[n+t]='\0';' w5 @. y7 o$ v3 \
    * F2 v* d, m$ a2 L  L6 G7 V
    }6 M2 u/ A& j5 O8 K

    * i+ l  _4 @; W( Xint L_length(char a[])- f+ Z% {& T' {: I1 G2 R! @# g% C( R
    {; z( X/ p& u' K! w& I0 V# L2 s$ F! @
            int i,t=0;;
    : z1 y& J" B& \- U& {1 z        for(i=0; a[i]!='\0';i++  )3 g5 }6 b1 @! R  i) w4 S
                            t++;
    ' W2 [8 n) M: }+ ]- S3 o4 P7 y# m8 ^        return t;
    ) G7 N5 A9 }! ~6 o- n} / ]9 X; B+ B. a+ Z" u5 F, d& s
    ) E4 i0 C: v+ i$ o' Q: m& U
    回复

    使用道具 举报

    慢跑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 编辑
    . y( r  v9 j8 m1 ?7 t: \, ]# g: P4 n( c9 n3 g: M5 Y
    li2.1yong用指针:
    % [! m" K  p( L& \8 l  H* s3 J6 G( q6 T* v, [; R+ ~8 W
    #include "stdio.h"
    * {' Z3 y. Q5 N" w( J#include "string.h"
    9 G, L+ k' E/ x4 {2 ^% r% ]void Union(char *a,char *b,char *c)# {2 e3 h$ K2 ^
    {
    9 m6 h. U2 P; m; rchar *p=a;
    2 ^2 o" _  y: \2 Ochar *q=b;* Q) y1 R: V; ^
    char *r=c;
    * A) O7 u0 S- Q* Twhile(*p) *r++=*p++;
    % N$ c. A: E8 t' X7 \3 E1 Rp=a;
    + A1 q3 _: ]" Zfor(  ;*q!=0 ; q++,p=a  )8 @$ P, i6 q+ o; }  T; ^9 `2 Q
    {while(*p)5 x8 b7 ]$ \' {% f' |
    if(*q==*p){q++;p=a;}
    5 B) M( ~" |9 Oelse p++;3 ?4 t; H) S0 P% c5 o+ \
    *r=*q;, E+ {9 C* q4 H
    r++;
    ! S6 P( b7 Q6 {* d( L}9 \3 a. v' t6 ^
    *r=0;# h) l1 l" f' }& W& l/ k
    # ^" {# k; v$ R, B- \; G2 m$ ^
    }0 ^- p% S( T2 u  k. F

    % \, R; w* b; @% ~& Xint main(){
    3 p/ f/ [2 p( v3 M1 X5 |/ S. `  d. O- _
    char a[10];' p. W9 t% G. g4 Z
    char b[10];6 F- M5 Z" R  L- T* d! H& [8 y0 d
    char c[20];
    - g) u: l2 j) @" v2 h6 g* Vgets(a);
    & T6 E+ _2 ^- E7 r7 @* Jprintf("输入的集合A是\n");
    ' ^3 e% o; O  y+ D, t5 P0 y; Sputs(a);
    - h' `5 M; ~, B# R8 E- Z8 K
    * M# L- H6 |* s% N0 ]+ e3 y# ]gets(b);+ U& `+ N9 b2 M  q
    printf("输入的集合B是\n");5 K' n8 ~0 ?9 u1 d' t4 w0 f
    puts(b);: q+ v; w  k2 S
    ) r& u) W2 a5 d8 L2 K1 Z
    Union(a,b,c);! y/ C! n* K! B
    printf("last得到集合C是\n");# s& `( {: N- G/ _7 P
    puts(c);
    7 _, B5 b' `5 _) J* ^return 0;
    ! p1 D( F* _) m# T4 V; n$ J}
    + e- c7 e( n7 Z2 Y% \6 w
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    : _5 i6 `  R. d1 o$ j) w, f" R#include<stdio.h>( ]4 ?$ R# a; I! G* C! E/ V  T, ^( m  t
    1 E3 ^: m1 g1 G" ~8 p
      struct node# z! I6 ]& Y# ?$ F' j! {4 {' f
    {3 b9 z2 V: X+ l! Y( y7 d( P
            int data;
    : c( E& E- W2 E+ v' ^: y+ S        struct node *next;  Y" z! E% K' q( l, I3 n4 t
    };, n+ T1 d( e- z" _: j* |& C0 i
    //typedef struct node NODETYPE;
    8 T+ _7 W! ^$ z9 h2 @& d, ~void main()
    2 }' V( h. |' Q1 s' d4 s{
    0 c+ z. z- l/ f$ {4 _        //NODETYPE1 R% c- k2 M. N1 h1 M, r
            node a,b,c,*h,*p;4 d& _9 ^2 ]' s
            a.data=10;b.data=20;c.data=30;
    9 W3 j- s* e7 b2 C+ \& j! q        h=&a;
    ) u( \% o. F0 {3 `- R        a.next=&b;b.next=&c;c.next='\0';
    7 O/ q1 Z* Z" {        p=h;9 Z1 b3 d% W9 `/ w+ l3 L
            while(p)
      o- \% f7 H* m        {+ c1 _3 }" |# O1 C0 u; b( [! I
                    printf("%d  ",p->data);2 ^1 n7 _6 k5 p1 S
                    p=p->next;
    1 Z& i: R3 @9 i9 s6 S+ B, G        }
    * g: w) c- F9 v  n9 y# P        printf("\n");! h2 k$ f. ]4 i
    }
    8 {- W: i! {7 K* n% m: n
    8 X6 a& G  f. s% ~& Z: l; F8 d( z# M& W这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    9 G: d# w0 l/ p% p2 m) d) x' `#include<stdio.h>* ^  P1 E5 E' j# [% O$ @
    #include<stdlib.h>& ^' d" Z5 c+ q
    struct slist
    3 N- E1 I$ P5 N{# p" G  e$ b, w+ t$ h
            int data;
    " f: k) M$ B0 M) U, K) V7 r        struct slist *next;6 {6 X4 M7 s- s. H- F
    };
    0 C9 t+ L5 H" V, x( a* Vtypedef struct slist SLIST;, N. ^; J! {, }  q% V
    SLIST *creat_slist1()8 ?# E- O3 z* c: F$ l. z
    {
    ! e* K% G1 [% H4 v; o3 S        int c;
    $ \; G6 r4 V7 j        SLIST *h,*s,*r;+ V& X/ j$ t: v1 c8 `' N% t8 z6 p
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    * R. d' c  f% Z        r=h;/ g. J6 R/ R, V- O' ]3 P% B
            scanf("%d",&c);
    % C9 k8 {* Z' O8 {9 U7 E0 |7 U        while (c!=-1)                                        //当输入的c为-1时,代表输入结束+ s" N$ M4 q; i# K& q
            {, D3 ^- K) o  T1 a5 X( Z4 a" ~4 U
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    3 x4 s1 @7 b/ U7 V$ j- o                s->data=c;  ~# d5 Q5 s0 X/ {; e
                    r->next=s;. w5 V. S# Y) g
                    r=s;
    + E0 {  R/ R% O8 {! `                scanf("%d",&c);
    0 t9 m  x3 |3 z$ K3 l% |1 c         
    / ?  y. ?  e) B. z# ^7 p        }
    1 F3 z# h2 _) i        r->next ='\0';) m/ H: n) |; I% M9 N# G
            return h;
    / k) F6 v0 e! N}+ G0 ~. ~' Z* E' o; C1 u

    1 d9 j# b; p" u5 Z3 k$ e( G/*/ Q7 |- B# ]% n$ V" S  {
    printf_list(&head). P6 \+ a7 x' ]
    {        SLIST *h,*s,*r;
    1 c+ H# \* ?# W( B        int c;, W4 M% Z9 Z% t; }1 o7 ~5 `
            h=(SLIST *)malloc (sizeof(SLIST) );* h( F% q' w( J9 C
            r=h;
    0 [4 }4 r$ a! F. N        s->data=c;( x) {( [8 @0 a, j
            //scanf("%d",&c);' I5 p0 m2 J9 `& _
            while (c!=-1)( r% I4 a6 V: s5 t& `( z% o
            {, A, Z  q. X3 K# i! n" _- |% G6 ^
                    printf("%d",c);
    / O0 S( ~! l) K( D                s=(SLIST *)malloc(sizeof(SLIST) );
    / G1 y# q1 k- m. O$ [                s->data=c;
    & h6 m8 N- O$ }2 |                r->next=s;
    ' s# ~+ q3 `6 e" G3 D7 I                r=s;9 C5 Z* s3 h1 J( t0 n( n0 M  {
                    - A7 q1 B7 \; L, I, }9 b; j) r
             ; g) y: |  D& z$ {$ p
            }
    . x2 D" J  x3 ~  G% E        r->next ='\0';& z* g7 f  {0 f. L8 q$ {- N
            return h;/ i0 x4 z( F( h( m
    }
    $ d: ~2 G( F" y" h$ ~, e+ @*/* f. E  I' M& f( h# Q5 k
    void main()
    . D# Z8 V: M8 e+ {8 f4 F* `{ SLIST *head;$ O( Q) z* }& n% Q$ ~' X* [( H1 L0 f
    ! {$ a+ Y8 O0 W/ M* P$ V5 F
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    0 }! d: Q* J6 F3 j9 m" ^3 |printf_list(head)8 F7 S2 g" P6 k. R" \/ C
    }
    5 U2 i1 @! Q$ c8 B+ j
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    8 ?2 h, j, j* |, R7 H5 j: }
    . Y, F1 Y  i6 G$ c; f#include<stdio.h>4 Y$ z- V7 T& h; q) B4 B! p" D, w
    #include<stdlib.h>1 M# I2 x, ?* h- ?  N

      U' V% c$ f1 a0 A# s( T0 } struct slist
    - b' a3 ^( i% p' d  {, T" v! Y9 Q* D' R
      int data;
    5 h- `! z6 w; H! L; K  struct slist *next;$ V8 j& e" n4 Y) o7 j$ w
      };
    1 Y4 E; h9 f! S+ [/ s7 X( K' q  typedef struct slist SLIST;
    , U' S& X' A! ]& J: b / N1 m$ s. G  y& f
    SLIST *creat_slist1()* X' w' n5 D6 j3 H% V7 X2 [
      {1 j/ X7 {4 x$ n! F, I0 v- B5 N
      int c;
    + [+ a& |0 y* b1 e4 J  SLIST *h,*s,*r;
    ) v9 P4 e. p0 K' ^: `  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    * F6 `% N# u' ]! N: }8 Kr=h;
    4 |, G. j& j) }  scanf("%d",&c);
    5 D1 t& c7 [" M7 g* K$ [  while (c!=-1) //当输入的c为-1时,代表输入结束1 J( K# I9 n9 c5 H% K3 `
    {
    3 u  q( t& e+ J! Qs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
      y; ~) n' t& r' i, y! Fs->data=c;
    8 z% D" Y3 N  t+ b- i8 ~  r->next=s;
    ) C# M+ H  A( @/ ?- r5 G  r=s;* i- d# J+ ?) u- s% L; Q1 I
      scanf("%d",&c);
    7 S* L$ U/ h; g7 I
    ( P8 l* y' k  L( D; M- f0 B/ L}
    ' E& Q/ [) F1 n6 }  r->next ='\0';
    ! b& Y/ B( h; H5 Y$ G$ |  return h;
    : Q/ t5 d# N% a' F/ M9 i  }' ^( f! _4 I# P4 Q  x

    * p3 X, M/ m, s# ^$ j; w' ^9 T/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?9 t# g7 i; A. }" O
    int printf_list(SLIST *h)7 R* [9 L+ r' a% n+ D8 D
      {) X3 j7 Z7 D+ ]
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚+ D# x" @% D6 ~6 o* N! @% R% U9 s
    while (h->next!=0 )# i4 n3 r; @3 L* k
      {
    ) c7 B5 j2 e" h3 l5 d  printf("%d\n",h->next->data );
    % q: N; P! p# d" }  h=h->next ;+ ~" P4 B- h$ m6 S
      }
    ' Q9 `- V5 t: Z& o+ b3 r  return 1;0 C$ S# [" [5 H$ ]9 z8 a& G
      }- g4 o; v" I' z  ~8 b2 M
      /**/& B" v3 K" R6 d+ N/ Y
    void main()3 u" G/ o6 N7 s2 p7 e
      { SLIST *head;
    4 H+ S5 L& n/ v" p2 }! y3 w- p
    / x7 X7 g0 u+ g' |) `head=creat_slist1(); //调用链表建立函数,得到头结点地址
      Y' B/ @" Z. L1 eprintf_list(head);
    + R' p' s; M! J9 j# z7 Y2 t5 r6 s) W  }
    & [. H; [2 |) I& G" }$ u* O
    1 [. _' e, {4 {6 _9 D3 j' o
    7 M8 Z& L* R+ D此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-12 06:20 , Processed in 0.521258 second(s), 90 queries .

    回顶部