QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2546|回复: 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 编辑
    7 E: z  ]8 `" I2 [2 |
    * R  b( M# Z5 W' f9 v% D4 o. @6 L% {计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。  Z% D2 B9 ?/ r- x/ z: D* `
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。! R9 R8 T* v% `' @8 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集合。, w* H* |$ H  t6 d
    这个代码是用数组的、算是比较简单的。
    4 p, Y7 t2 }& s% {! v2 R2 l8 i
      ]; D& @( h: z#include<stdio.h>
      k& ]$ a  F$ N8 H) Y- B7 yint L_length(char []);+ g4 ~" {3 @1 u
    int main(){5 R5 ]) W# [/ ~* K5 F8 z! x8 ~+ r3 W0 ^
            void Union(char [],char [],char []);, z; K' Z1 N; A3 @8 {0 y
    ! V9 Y5 G# x; h# j2 d
            char a[10];# b* l- ~" V! H
            char b[10];
    ' n" K2 q4 Y4 h        char c[20];
    0 z1 K- b# X" g6 D        gets(a);
    ) I4 f! l5 D$ e# g        printf("输入的集合A是\n");
    - C$ E6 B. p5 Z5 T# c        puts(a);
    , m5 J! f) h6 O2 K8 x
    3 ?* T  `- }4 M% u        gets(b);
    2 z! E$ C( c/ F+ G  k- n        printf("输入的集合B是\n");6 \8 q1 K# ^! z' [" ~
            puts(b);/ b) E5 w4 O) F7 V

    + j5 B; _7 B& G& G9 m        Union( a, b, c);) H+ X) T, t# g" P7 Y! w# I
            printf("last得到集合C是\n");1 S8 [6 S& C3 W5 k/ ]) p9 H
            puts(c);0 h) [/ ~* Z$ _5 i0 F: M
            return 0;3 o* T4 q0 B( e# F% B* D2 g9 E( x) ?
    }7 D  V5 y8 d6 o; P- e. G+ X3 I
    2 S6 B" p# Y2 H4 s1 n
    void Union(char a[],char b[],char c[])
    / i  }) }0 v6 N{
    ! R. m: q4 T* V! x: K% `4 A: B        int flag=1,t=0,i,j,m,n;
    ; p" u& a; r# Y  b        m=L_length(b);7 l2 E& \, H( v! j8 n4 |
            n=L_length(a);
      |. v3 u  w) t        for(j=0;j<n;j++)4 a# P. S  r) c$ s
            c[j]=a[j];& {3 @# |# B' t5 }, ?
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    " s5 w% U) q- ^3 `                {for(j=0;j<n;j++)
    ! ?& x9 N' n' I+ z% N* j                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了/ {, [( J( O. ^- t3 o! Z, m
                            if(flag) {  c[n+t]=b[i];t++        ;}
    4 i" p6 S) V3 W1 D9 D                }& S/ U4 ]- j5 `4 _0 @
            c[n+t]='\0';
    ) a  p3 k! Q- @! T- T 1 `# v9 V$ l) U" E/ `/ X
    }
    + V; @2 w: \& @' _( h5 J7 P
    * G) |- e2 p) ~  W6 E+ _& dint L_length(char a[])
    ( Z# N" V4 i/ u- @  f2 Y{
    4 Z: P. ]; O. }1 H; `, y        int i,t=0;;) i, u* O% k2 Y4 D+ `# q6 p
            for(i=0; a[i]!='\0';i++  )
    ( w3 U* s2 @' i2 n& u3 g$ i: G                        t++;
    & X' e( t+ y- W. c% E        return t;3 [% C1 r+ G! a6 c) R/ z
    }
    ) l, X% D" D8 m, A8 R' p; V. X  g# _+ L5 D5 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 编辑 * e6 ~; s# M0 r

    " f( b  O# b. x7 Sli2.1yong用指针:
      l0 _& a% K$ }$ S
    $ J% J9 ~6 Q: L7 F: ^#include "stdio.h"
    , W3 N) E0 l- e+ D. b#include "string.h"1 T, `; ]& e$ r' q* Q
    void Union(char *a,char *b,char *c)
    $ J5 L2 r$ Z) h- l& P! p{# Y9 v8 x% Y# l0 h- g" U7 w
    char *p=a;' R# r! }7 ~7 W
    char *q=b;
    " c7 O, `6 Y6 U% |' A/ echar *r=c;
    , ?/ x) L7 ]7 x8 l6 a7 Gwhile(*p) *r++=*p++;
    7 _& J6 S) ~* {2 Q) G; s6 ^p=a;, G; a1 y! K8 b4 ?7 O5 u* f' Q  G1 @
    for(  ;*q!=0 ; q++,p=a  )) S/ C3 s! D* \3 B
    {while(*p)" k- Z1 {  a3 P* d, o! S
    if(*q==*p){q++;p=a;}1 F5 @: K0 E( q" j
    else p++;9 A1 m. w! v: J  c
    *r=*q;
    / ?9 {2 H( B, X$ hr++;
    : P0 F9 z0 o& R: y* B) q6 q}9 T* v8 ~% ?$ q, C
    *r=0;
    $ M- ?- B- P) O8 r: I* Y0 @+ u8 v# Z6 ~: u7 i. a2 [
    }6 O( v8 N+ W# O& f9 H$ `# n% L

    7 ]: p% Z$ W2 k# ~% Wint main(){) f. v0 Y1 Z2 b& S2 |  k

    3 ^, l4 K8 L1 P/ r3 z# Bchar a[10];7 `9 a: X: D+ N9 M$ [) J
    char b[10];! |7 i9 c- a( D6 v: ]' D
    char c[20];* t9 f, M* D/ g5 j
    gets(a);2 q( s) [; M5 Z8 f+ i- ~
    printf("输入的集合A是\n");' P' N  M4 i9 `
    puts(a);7 f% N5 X* j3 {. e7 v

    / `3 s0 e( x8 f& \( P$ H6 hgets(b);' @8 [9 O1 f/ M+ k7 A/ ]. D
    printf("输入的集合B是\n");
    : P: g1 ~9 E4 `) Q0 rputs(b);  W& U$ v) Y4 W8 q- n( p' m( v. ?

    & f$ m7 {2 w6 \7 P9 m. |, J- cUnion(a,b,c);
    ' n# m5 Q# X9 r5 \, i- @printf("last得到集合C是\n");; |0 W4 d4 k% u2 q
    puts(c);+ c5 G9 P# k# Z/ l4 q+ Q. F
    return 0;* D6 ^8 J* u+ j/ g' l: P
    }, _1 q$ }" T  U! T$ f# F. o
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    # Y8 F3 w& c) R/ m, b/ E+ P#include<stdio.h>
    + x! p3 e: B4 _3 x  T# ~
    ( o0 J% A& C1 d: F3 F! j  struct node
    9 g, T2 k3 h5 R4 o; V. v9 s& W( j{& m0 i3 U2 x2 H) n2 \& k
            int data;
    2 \1 s3 G  |. a( A        struct node *next;# w$ v2 L9 _9 S  O4 J/ t
    };8 K' [3 }: J. T4 }
    //typedef struct node NODETYPE;  h' Y2 D2 {6 k$ G9 |
    void main()# V: W1 d2 S! _) \
    {' j" G; X- q" H4 @% `
            //NODETYPE" ?; B. T( r; ]1 E
            node a,b,c,*h,*p;3 ]2 _5 L5 |" y3 \4 b$ i
            a.data=10;b.data=20;c.data=30;$ b6 |; L6 Y1 E6 N
            h=&a;
    , E) z) ]7 \; ?# U* x8 |+ u7 a        a.next=&b;b.next=&c;c.next='\0';( \" K1 k9 i( R) P' i/ R& ?
            p=h;% Q) S0 V% ^3 S) v
            while(p)
    # q% B$ p& k( p5 R+ L% h& S        {# c2 [$ o! B0 r4 i) i/ O/ e/ o
                    printf("%d  ",p->data);
    + C+ k7 e$ b9 f* @                p=p->next;3 W1 e/ h0 I. R7 j/ U: n
            }4 ^  L9 D4 Y2 W/ L
            printf("\n");
    * w4 r1 S$ u% S" x6 M5 z! k5 r}
    ; M( `# n* e# R7 r$ b- _
    / b+ x; i, I& p* a" O3 X这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    此代码为生成一个链表的代码:+ q7 a: V3 `5 I" H  r. F6 q
    #include<stdio.h>% s* Y6 @* ^( }, N6 v
    #include<stdlib.h>* U5 O+ R4 O7 a
    struct slist
    , j( o5 Z) y- j# }" C' W{5 \# v5 f2 `8 }) ?, w7 \6 |( `
            int data;
    ' H; Y! o8 w# f& K        struct slist *next;& n0 W8 A1 u" Z/ V( T1 K: g) U
    };
    ; k% U, _& a  ctypedef struct slist SLIST;
    % O9 d# t/ S% g. S, n# I- @SLIST *creat_slist1()
    : ^1 p+ o' g+ X: z2 w/ R{
    * ^1 ]3 b. u: C0 M" [        int c;
    . i' j6 r, ~  c6 C# k9 c! h        SLIST *h,*s,*r;
    7 H5 w7 C! o- F5 E+ e        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点: n, `: |1 C7 H9 l1 y& T+ t
            r=h;+ o- ], T! C! ]8 v5 _
            scanf("%d",&c);
    , a4 J% U$ e# \) N        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    2 ?9 p( E& b, ~2 {8 P        {
    $ t/ V8 l; X: h6 V( H                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点) q) o5 _4 I4 a  ^4 C$ o
                    s->data=c;2 j4 y7 L+ B- Y+ ]/ ~# i$ _
                    r->next=s;
    9 {8 j) R# T/ a% W4 [8 i8 i                r=s;
    # P9 U0 {8 g% r* s6 A& r9 s' N$ Z                scanf("%d",&c);
    / d$ D* }: k, Z3 a& l% F' L+ p6 d% E         
    7 v- N7 }, r9 I/ `  r4 _2 Z* w5 d( d        }/ y$ {) o" U0 W& x: |$ [) F
            r->next ='\0';
    % f! c% u$ m  f8 o& F+ c7 {$ v        return h;3 G: w3 g' @8 U) T& {
    }$ [" }& f' g* Y

    0 G8 v# A1 q, z& W+ [3 T/*
    : i+ A# {' Y' C$ i, D- Z9 w8 D& Yprintf_list(&head)1 u; M9 V/ c/ V- ?
    {        SLIST *h,*s,*r;5 S0 @/ K: K) W1 ]6 G
            int c;1 L8 e8 i2 R  p
            h=(SLIST *)malloc (sizeof(SLIST) );9 x/ W. n% s8 C$ i  ~1 b
            r=h;8 n: Y, r% X. n% Z
            s->data=c;* V" a* {4 f( n4 F; f7 ~, Y
            //scanf("%d",&c);. ]+ l  e9 T( M! P
            while (c!=-1)
    3 ~3 S# j; D) d/ G# W        {
    3 |5 @+ m) `) _3 r- g+ i2 t                printf("%d",c);  `6 U4 q* P. e; U! ^# P7 z- N
                    s=(SLIST *)malloc(sizeof(SLIST) );
    * y5 A' G) s4 e8 z) g) a5 @# G( [                s->data=c;1 V7 ~$ e. J' u0 D) j9 O5 w! O6 q
                    r->next=s;
    2 W. G9 r8 d; @' ~                r=s;: ~9 {' y- ]) P9 l' m+ {) g
                   
    2 Y5 {0 ]" \8 T$ m! a         " g) i1 K) U& S" W& Y# ^2 O4 @& m
            }7 B& j4 h; p8 `+ D
            r->next ='\0';
      g) i2 I( N/ S: ~6 C        return h;7 N: P" v7 t5 V# ]) m5 L( Q( {
    }
    ! i2 e7 |1 X: j*/# d+ [6 E, K7 {( Y
    void main()% a, c* p6 A3 G$ ^
    { SLIST *head;
    - w7 G( A  G7 X6 j3 `, E* F
    ; \$ k$ }" }: k% Qhead=creat_slist1();                //调用链表建立函数,得到头结点地址8 L2 n- S# }% _& s" T
    printf_list(head)5 w7 |0 U" h4 B5 ]
    }
    ! S& C/ q! k  X& U, ?1 E3 D
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。! ?5 R7 K* ?+ F. P8 O
    8 x- Y4 t4 k5 K: N9 H. h9 I' j' D
    #include<stdio.h>3 x  l8 i& x  k' a
    #include<stdlib.h>
    ! \' W  u, i0 [0 ]2 _" Z
    - ]* E( ~5 n8 d1 I8 C$ } struct slist( A3 i& j3 V" R6 r
      {
    3 ?+ [  r6 B0 V5 ~) {( i8 `( Q  int data;
    8 C& \; g: j- i" L  struct slist *next;
    2 E  N0 R- x6 i/ X) P/ q+ M  };  d7 X( w% D4 ?) C' J
      typedef struct slist SLIST;
    7 ]$ a* U) ?7 r' P $ R4 L" E7 }& U) R  Q8 J
    SLIST *creat_slist1()' M; P, e0 n) ^8 d, V$ a6 }, x
      {
    ( h6 z' n6 D+ r( |2 T  int c;
    3 O" r7 I3 J; \  SLIST *h,*s,*r;
    # h+ `4 r% B3 k6 G9 v; C% M2 _' B2 F  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    - G# {/ l; \; _+ w$ d) _& p7 e/ {r=h;
    % V7 Q* u) C% \) Z" |9 Q/ O  scanf("%d",&c);
    . B; N. {# v5 @8 i6 p/ Q. k  d& `  while (c!=-1) //当输入的c为-1时,代表输入结束
    6 a* x6 Y6 K" X; t{3 `3 X" v5 n) U/ p
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    4 Q' k' P2 Z1 Y+ e0 ]0 Ys->data=c;
    8 e! Z0 H9 @) P, W7 c  r->next=s;3 J- X" n' y5 x" v( \  a. V
      r=s;/ x9 Z* C' P* S& N8 C2 F
      scanf("%d",&c);
    3 D: ~5 K8 R% C. J, ]
    . _/ h0 x( ]9 c}& i) h  I0 k. h
      r->next ='\0';
    " r; ^6 o3 O) r1 j  return h;
    # J, D& V! c8 M4 @& c  }+ e0 m1 i6 d: W! U
    $ q, T, m# D: x+ l. ?4 X
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?4 m$ Z* ?$ _% W- R1 P9 \: d
    int printf_list(SLIST *h)7 E4 Z2 m2 [- b. M
      {
    " j5 K3 |, h9 O7 A/ d7 m4 L  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    0 v7 t! K9 \7 k" ^9 l; l1 o while (h->next!=0 )
    ; K1 K- Z5 y6 u' I% l4 J9 \  {& p& c0 n) u4 N- y0 ^( E( R0 x
      printf("%d\n",h->next->data );
    , s- J3 g4 Y+ X" A( h1 W  h=h->next ;
    * j$ v: s5 C( G! s; W  }3 x5 R) `. z' L) p4 o
      return 1;
    1 `8 s1 z7 _3 ]  }( A) \  f; h+ c. f
      /**/+ @$ @, c; M. I# X4 C
    void main()
    ; ^$ F" r& ?& f  G  { SLIST *head;
    : ?) K9 M( f9 }, Y $ J' ^" {5 I1 o+ G
    head=creat_slist1(); //调用链表建立函数,得到头结点地址7 Q; v( k; U# D) \+ ^" X# I9 X
    printf_list(head);& e+ T+ A& ^( b* E8 ^; T
      }
    / }3 a" y# f( |; ^& a& X6 x( |2 `* \# S' s+ w2 s6 Z/ p

    1 E  D2 R0 p% B+ @/ Q. Z3 ]此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-31 18:11 , Processed in 0.390040 second(s), 83 queries .

    回顶部