QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2404|回复: 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 \1 Z% z9 A' U% T" B$ j+ a& [, P, u0 X! m; g/ a8 l
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。2 b! p5 y! o7 ]2 ^5 f
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。* y8 x% `% ^6 t: B8 C; 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集合。4 I1 ]# |" Y  b' l
    这个代码是用数组的、算是比较简单的。
    7 x7 |7 r4 F$ t4 J3 A) n4 f" k8 }- ~* W) X/ F; K: |
    #include<stdio.h>8 f4 I8 ^: |9 t# P4 ]
    int L_length(char []);: j& \" B0 c- W! C9 S; `
    int main(){
    ' M5 R0 @  L' W0 ^- e7 ^- s        void Union(char [],char [],char []);
    9 d) y/ E. V' M  q# `# K$ Z) }: v* D
    % Y& K3 A( V& \# ]4 a        char a[10];; H' W8 Z+ u3 ]2 b' ~* Q+ S
            char b[10];
    5 S+ [% h) ?% @6 Q7 e) ]' u) p' m) P        char c[20];, m' K5 q/ h$ x7 G- j3 \8 ?
            gets(a);) I6 k1 ]: R9 v* U$ _6 c" h
            printf("输入的集合A是\n");8 s1 ~1 _* X/ c) E- B; t
            puts(a);  ]3 e4 A9 P$ m3 M( e; E' {: b  p( r

    . A( z& t: e' X! w        gets(b);
    7 r9 f) P/ j0 k1 }        printf("输入的集合B是\n");
    6 J9 I+ f0 Q& i        puts(b);- t2 F# P% E- b$ `( G6 L

    + [  c8 S( E, Z6 E" W' b& f        Union( a, b, c);5 P6 Q9 m/ S  ]' I) Z$ Q% j  O2 E
            printf("last得到集合C是\n");( g* |9 b9 [; z: c2 s! y
            puts(c);5 n/ a9 g0 g& v/ q/ i
            return 0;
    , L% H9 K9 l4 `4 g( I}! M# ^& e% h: G3 I
    ( d5 z. s# X, P! d2 N7 c
    void Union(char a[],char b[],char c[])
    0 g6 m. m7 N$ U2 r& G{
    - |( T& P8 t4 l3 C: [- G        int flag=1,t=0,i,j,m,n;- G2 _9 C7 d/ z& e( @: g0 O, v
            m=L_length(b);
    0 n2 \* `0 O7 b4 {2 p0 W        n=L_length(a);
      B5 ]$ N. e" ~! ^$ E- r        for(j=0;j<n;j++)0 M9 _. p' `) p* U
            c[j]=a[j];
    + T9 K* ]; R/ R  q. I- Y2 h4 T# \        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;' h6 A( P7 m: C# H9 c$ n
                    {for(j=0;j<n;j++)
    & n# p+ b0 w6 ^+ e: D! Z                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了& y/ `0 N7 Y9 N  j4 t
                            if(flag) {  c[n+t]=b[i];t++        ;}
    - O0 P- w- L) f' n                }) N, E& a2 P  A. p3 f6 x& T7 \
            c[n+t]='\0';! S$ U8 K$ Z1 g+ z) b

    % E+ j0 f' c' c! u}  Y" v) I( N% H

    + v/ t2 |( C3 @- N" mint L_length(char a[])
    ) v$ \; M  x$ n6 y( w{
    & x: K7 {' P7 z+ E        int i,t=0;;9 O, n& ?' b, s
            for(i=0; a[i]!='\0';i++  )
    & `) E# E& S- d" c' o, C4 p                        t++;
    0 W& h2 S1 B3 j- q# I        return t;4 ^# V7 q6 ]4 _. p" Y7 O9 D
    }
    , L+ k7 {8 y2 t2 C# {5 F1 \0 K. k' Q. `  r2 N
    回复

    使用道具 举报

    慢跑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 编辑 ' g+ y' j9 m# Y, c% M2 `

    % f' r( ?+ P) n# y! Cli2.1yong用指针:
    7 ~* B1 A  D3 U+ V7 s2 L+ n0 |  X$ m! Y# P0 m
    #include "stdio.h"
    0 ^" V+ a4 g+ N#include "string.h"
    * t8 K. Q' }: X5 M3 zvoid Union(char *a,char *b,char *c)3 p8 z& [; A+ @5 e3 r- v$ e" y" i
    {, y8 f3 W; j, ]0 }
    char *p=a;
    # y1 ?6 P: v" S3 }' Lchar *q=b;
    7 q4 a9 {& k! bchar *r=c;
    / Y" \: q" ~3 Ewhile(*p) *r++=*p++;
    8 N" C1 u) E. E3 }5 [" Hp=a;- X1 V. i9 u3 Y6 h8 w
    for(  ;*q!=0 ; q++,p=a  )$ Z2 T( \# T0 R% m! e( j6 G
    {while(*p)
    5 E# z8 }# |% J! s1 M& Z( wif(*q==*p){q++;p=a;}& k! N, }9 e* O
    else p++;. ]+ Y- e0 _# ?6 c% \  I. @' R' _
    *r=*q;
    ) S* f9 h0 ^1 x, ir++;- Y) {3 C; ]- W* L- ^; @
    }
    , N; x2 z" F& i) ]% L! D( \& r% D1 D*r=0;# X, Z, I/ e1 u" l% l+ N) Z8 H

    ; x) t$ b, u% F4 r8 k5 t. x}
    1 f; r4 e8 k8 W2 G" m( s2 x
    4 ?* n7 V3 m6 H( `7 C/ }/ |3 @, ]2 [int main(){+ _  m& f# B. V  |) T" v" x: e2 [
    ' ?. l2 G" b; m) l1 V. ]/ _
    char a[10];" U- F) e0 V5 ?4 X6 c  A# h/ d+ {
    char b[10];' O/ N7 k, P& X; J7 m9 B* {
    char c[20];
    4 d. j1 `7 k5 b  p2 W! R1 Egets(a);
    . Y6 n1 o, Q; z" [0 |" w4 l' w; aprintf("输入的集合A是\n");
    ( h( A& ?/ D) O" X& }puts(a);
      N' j6 G- N9 N. n3 n
    ) o$ [; F/ m4 o6 k8 Pgets(b);
    8 U/ J5 U+ {. fprintf("输入的集合B是\n");
    , S" H6 e4 o2 d0 M* S) J+ F0 Kputs(b);
    0 p" P- N- u$ `# i& E) ?, j
    " @$ F- S3 O0 p+ Z0 y5 ?& nUnion(a,b,c);8 y5 g6 R1 g5 G- @& B* b
    printf("last得到集合C是\n");5 D3 T; W- H" z  E. ^
    puts(c);5 _& |; B* p5 n# E5 w
    return 0;5 {' J. i4 w6 K7 N1 C% x% {
    }0 Y7 s% D0 |1 ]5 ]' q# M
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    + `8 ]' s) i+ ~2 E0 Z#include<stdio.h>! F5 I7 Y8 C: b/ a9 N! G; Z

    ; p) J! n9 G# @  w. h/ O$ F, W6 U* w: K  struct node1 n3 O# W" |) b& T& J3 g! d$ q- T
    {, e" T: ?6 t5 @! F0 H! J" W
            int data;8 _% }4 p# Q: r& I" x) c" [
            struct node *next;
    6 S8 Z- [( C2 f: \' p4 R) s};
    8 E: A3 v- T- e1 `% [* ?//typedef struct node NODETYPE;; B) N6 p; y$ |$ s. i" J
    void main()
    , H5 P# D  }$ {* m{
    . K3 x( v9 T6 v        //NODETYPE5 y9 ^2 k+ z) v0 F- T3 ^0 |
            node a,b,c,*h,*p;" O6 u' O& u# C' t" t
            a.data=10;b.data=20;c.data=30;+ c6 [9 ]3 h: Y: t1 I' F6 ~* q' `
            h=&a;- R, n( |% v  H% |& f
            a.next=&b;b.next=&c;c.next='\0';
    4 @# i# S. N8 e! p" u. i        p=h;& o5 L5 Z* Y" L7 m
            while(p)
    - z$ m/ g9 e5 o# b. Y& ^        {1 g  H1 M1 W% o8 t
                    printf("%d  ",p->data);
    # I5 C$ v. N( ~                p=p->next;
    ( i0 X6 m# v  b7 ~        }
    4 R) n/ a, L5 S! H, M& T( J        printf("\n");! A  G6 F0 c0 G+ m6 F! y
    }
    9 w7 `9 ?+ x  @. S
    + v0 M0 z0 Q' i5 M4 k; ?+ F2 B这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    " e# g7 d  |# }4 f# |#include<stdio.h>
    ; _# E1 T* z- O' G, S% F#include<stdlib.h>, B1 C( n( g" ?+ e3 S' [" B& L) ~
    struct slist$ x/ c, W2 |# S2 f1 b9 [6 L
    {
    + Q2 h. P' J5 A6 R        int data;- H& _6 D9 {9 ]9 U5 H$ H
            struct slist *next;8 T0 F) |% e7 R4 W
    };
    9 b: d+ x& K! l1 @% l0 o4 Ztypedef struct slist SLIST;
    4 n; z% z; G; i5 _8 pSLIST *creat_slist1()% U% W' n1 A+ m2 g) \2 X
    {
    ) c9 Y- U; a7 n. [8 t        int c;# M0 @  g& k- @# G+ }3 f9 g: N" Y2 R
            SLIST *h,*s,*r;2 V" Z- k, o' i+ Y# y
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点: I  L6 n6 L' s
            r=h;
    $ n0 _- j, w- Y2 O. k        scanf("%d",&c);* z) `0 @, I2 o0 u! s
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束7 B7 o- V& e; ?# z' z$ c
            {# D* w' m* S/ p. c) ]; w. z
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    9 v2 d; J. d6 ~                s->data=c;( K( P7 p$ P4 [0 k  q# p) ?& q" L
                    r->next=s;& |5 W1 K2 ], c( z
                    r=s;
    1 u* p) [1 N- x1 C                scanf("%d",&c);
    : N+ A7 e$ v1 @: S6 a  t; l. c7 _$ g         $ }- h# @  U' {# _3 r) ~0 t
            }1 U- p- Y6 O# E4 r
            r->next ='\0';
    & v' r' Y& J, u3 f        return h;
    3 m9 d5 Y; Q& d: I' Y9 J}
    ) q. a" _& K( o, |8 P
    * d4 ]2 E# D; v, A' S8 L( G" B6 ^3 z/*
    % Z0 E# d2 |2 U: l( {; H5 ?7 {printf_list(&head)
    . y7 T3 n: o/ G* l  W( ~# A0 R+ t{        SLIST *h,*s,*r;
    + T3 Q# }' F3 C7 z% F4 }9 G        int c;
    / k6 S/ V7 y4 W6 f0 ~. \        h=(SLIST *)malloc (sizeof(SLIST) );* J6 H. x" Z) q; p
            r=h;: \& a/ f- n& p8 }; A$ ^& I3 u% _7 _
            s->data=c;3 d$ i: ^3 @# [& m3 t* \; m% ]
            //scanf("%d",&c);
    , a9 E8 A6 S$ S# B8 v" \        while (c!=-1)
    $ x0 I( [9 f3 j" ~4 S* ?8 I        {
    - q% x3 x4 @0 ?+ ]$ X1 M                printf("%d",c);) q2 j6 b: _! ?* q* `' ~
                    s=(SLIST *)malloc(sizeof(SLIST) );7 f9 I8 t; ~4 L8 k
                    s->data=c;  \) y+ f0 m3 A# J1 X0 _, v; G) v
                    r->next=s;
    " F$ t+ c: |" Q                r=s;
    - q  p$ }8 c, ?! P+ ?' h( a! y4 f# U                . A6 O* Z% W; x" _" p
             
    # c) V/ G8 e. X$ Y( V7 d8 W( z* z        }! _$ ?+ \* z0 s: ~5 R
            r->next ='\0';0 k4 J. F& A( r$ o' X
            return h;' f3 x7 {4 ~. o' Z% D3 s& Y1 f
    }# }8 _+ J0 o( f5 e! [) s
    */
    8 V/ s8 _# W( `3 H  P/ D& p# L. l, Wvoid main()
    % \! f9 Q9 X; e{ SLIST *head;8 Y- Q6 e" i, ~- D% w

    & G! H! B2 w# chead=creat_slist1();                //调用链表建立函数,得到头结点地址
    3 f1 c0 J  O. Wprintf_list(head)
    0 h- S+ i* E) O# e4 V1 _# \}
    , Z' P: H% k& l' D
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    ; v7 I% }; v2 j6 h, [% k0 D, `3 ]8 _: {
    #include<stdio.h>2 v+ T; T! K' j7 Q0 `* L/ i% s
    #include<stdlib.h>, t  W. b& n! ^5 I
    - D% t. R* x7 F8 J( G  x5 [- N
    struct slist6 o3 Z6 ]9 K4 v2 K9 T
      {
    2 J3 O; S& c5 t0 H  int data;8 }0 r% o. q' s, }
      struct slist *next;9 T( O& _, f8 D+ W
      };
    : e; ]+ @1 G4 ~. E* |- p0 Y" @  typedef struct slist SLIST;
    ) n. \# o5 g, p' b8 h# Y
    7 L5 Z9 G7 i1 q' q8 P$ S SLIST *creat_slist1()" @& b! M8 t! u3 {  W0 {
      {
    & i; x* c/ g* P6 N( e# l9 _$ O  int c;7 h  j: ^4 R6 W0 c* r- P$ N: d
      SLIST *h,*s,*r;9 n% c) l7 j/ g$ _, T& ?
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    - c/ F* t! }1 z9 N9 nr=h;
    ' k( j2 T& h/ I& g  scanf("%d",&c);
    3 Z5 ~+ G  o  Z/ J7 q* z  v  while (c!=-1) //当输入的c为-1时,代表输入结束
    $ x& V9 `, s# \3 x3 B4 O+ m{
    . i$ Q5 C! m8 ^( Q, ]/ @$ as=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点' c9 h& j, x% {2 n& b
    s->data=c;
    4 }) E$ A: r; |. M: a' K9 A, F. e  r->next=s;
    / q' c- y( J* Q. P; R  r=s;. [: o" Z6 p! [0 ^- }5 L
      scanf("%d",&c);
    ; }% x2 z7 h- M4 ] 1 w9 P1 U: e. E
    }
    ; T7 G7 D$ X' v; ^* h  r->next ='\0';& J. M% a( o( ~+ }3 Q
      return h;& }9 A5 f9 W: Y
      }' H, O& y' w4 P( K: [; s
    / K# t. ~, w" r: n" ~- R
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    - u3 H( C# ]5 P4 q  S/ tint printf_list(SLIST *h)
    ( X3 M" j2 o3 I$ Q  {
    $ M! V+ w( C3 J  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚( G+ P% C5 `, O. g* @
    while (h->next!=0 )2 ~8 G3 A$ P0 J2 c! Q
      {
    / q* {* z3 {1 D1 }. P$ M  printf("%d\n",h->next->data );- j: C  r7 \5 B# }) ?2 Z- U
      h=h->next ;" y+ v, D3 l/ [  [- {* @
      }3 c; x  P0 d8 _0 v/ {; V' m
      return 1;
    ' [- v" U( p8 N) B  }- Q0 P) q  i1 Q% Y7 i9 V: o* i5 M- `* f
      /**/
    5 b1 Q( O# w  F( X  w void main()1 d( W( a# K. l' N& L; w
      { SLIST *head;
    3 x6 r8 E6 x# _0 y
      t/ N9 D  t- A* Q) khead=creat_slist1(); //调用链表建立函数,得到头结点地址+ `) q+ \9 ?6 m/ n1 g' d! F
    printf_list(head);9 O( J* j2 ?+ L8 w" b/ T
      }
    ( c' m4 q3 K+ c  f. a( S3 e8 Y& g' Y6 I* w

    # q5 L2 @& v8 T5 [% L7 {& Z/ ]6 u7 m此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-18 18:14 , Processed in 1.051628 second(s), 83 queries .

    回顶部