QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2313|回复: 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 编辑 $ r6 j. l3 Q1 M" Q
    4 Q. F& P- h- {& {9 ?
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。& ?- O2 U4 }0 i3 z
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    ) g" |- w: ~% N6 O4 e: a
    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集合。& @1 I; p( _  F& m! @
    这个代码是用数组的、算是比较简单的。
    ' r: R( {4 U8 b8 S5 c' e
    1 _: S' j$ h' L) L, {) G2 d0 Q#include<stdio.h>
    8 `" F) a2 O/ v& \  K% mint L_length(char []);
    7 N. W8 s- R6 G0 u$ Aint main(){
      v2 r5 k) v" e" J" |6 b& r0 o1 C5 M        void Union(char [],char [],char []);
    , L5 l/ j7 s* K' y. d$ ^
    + k5 ?# A$ t1 \9 H        char a[10];+ y$ T! j- G/ ~% t
            char b[10];
    ( i" z! L  s: z& p; [7 Y        char c[20];
    $ W) W- F, ?0 M! |7 D" e  G4 V        gets(a);
    : |: P4 E2 n; T# K2 x; J        printf("输入的集合A是\n");+ n( [5 d2 D' q
            puts(a);8 v' M8 f( a- c

    % P7 L( w' L# y* B% b/ F- P        gets(b);! p$ {6 w1 I3 g& O$ G/ P9 Z/ ?
            printf("输入的集合B是\n");* }5 D" ~0 W/ v" F& k  c
            puts(b);
    ) _" k: G" L1 q7 W2 r# T. C8 z' T) T6 E8 D8 B" s
            Union( a, b, c);
    ' _5 ?: M" ?# P0 X! H. t        printf("last得到集合C是\n");
    ! N8 M( H% M0 [* q7 Z        puts(c);
    , g6 C; K+ X2 u! T8 H3 k* n        return 0;
    . _* _# t8 ?) k+ C9 a}5 `" `+ E1 J) V+ t0 T
    8 b( N7 H; {8 T% R
    void Union(char a[],char b[],char c[])
    6 y8 t5 Q. Z8 I$ K: a{
    # t) ]6 [5 |: I. J        int flag=1,t=0,i,j,m,n;$ ^1 b& O: t/ q1 n
            m=L_length(b);3 z- V! `, P* t$ l0 V2 r
            n=L_length(a);$ R8 C6 p& r1 ]; ]- h" V5 N
            for(j=0;j<n;j++)9 v' X) t7 n% O  u: z
            c[j]=a[j];
    6 h/ a3 Z- Y1 H6 @5 J/ v! T2 I        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;; ^9 _/ r2 s" |4 h8 o# m' c
                    {for(j=0;j<n;j++)
    , {. {% M7 h& q0 D* W                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    " b% M0 t+ ^& m( r% ]6 f# V2 l                        if(flag) {  c[n+t]=b[i];t++        ;}
    6 h1 P9 B. D. e                }
    + N! P# Y% Z3 I2 n  i        c[n+t]='\0';2 k8 I4 \0 L! N# ~
    ! p/ D: Z0 g9 O! b! \5 Z
    }2 W7 o# L4 ]& y" Y
    & l/ I# O2 P* d
    int L_length(char a[]), [1 Z1 [0 t# }' [4 U
    {
    . V6 v& J9 F3 e% y! [6 t; `8 `        int i,t=0;;
    . I* L3 h% ~5 @+ U, N  w        for(i=0; a[i]!='\0';i++  ), M# U5 |$ R% K3 I" q2 i5 T
                            t++;9 {/ T2 \3 v8 Z; f1 p- U! D! O9 [
            return t;
    / G$ g! `6 }& d* A}
    8 A! @, ]) v& n& s5 L9 \
    6 l) E" \4 {  X6 i. J0 ]
    回复

    使用道具 举报

    慢跑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 编辑 2 V) f; E$ ]1 u

    1 t+ f- d/ l. l. j. ], V# E" sli2.1yong用指针:  n5 G$ D- w& V: y( v/ r

    3 u$ Z9 O  ?+ k; O) O8 t' \#include "stdio.h"
    $ I! o9 a1 b4 ^. G1 c1 U5 g7 z#include "string.h"4 f& t  G/ ?8 `
    void Union(char *a,char *b,char *c)
    5 _1 C/ |, t8 A; ?{! f# E5 I7 O# R6 d7 ?" c7 G: |
    char *p=a;
    5 w4 y& |' q7 E  c) d! n) A+ vchar *q=b;
    + I" a1 Y2 b, y) n/ z) T; c3 }char *r=c;
    ) u4 Z. Z4 n- k/ W: n4 \. @while(*p) *r++=*p++;' z0 H; c- ?- K' y$ J
    p=a;9 ], v& S& d: ?
    for(  ;*q!=0 ; q++,p=a  )4 e- r" Q3 B9 v( n8 x9 O; I: C
    {while(*p)
    3 C2 W6 O' V- ]. ~$ a) ~0 fif(*q==*p){q++;p=a;}
    4 d; e" v+ k" _- F" Y3 ~0 relse p++;! b! G4 J* k2 m/ d8 H& B) h
    *r=*q;
    , ^& K. y7 W1 t6 ]8 {r++;
    ; G. Z$ D% o0 y. @3 G9 q}
    / T( {+ X+ n/ w. p9 D7 ^3 d) q, z% Q1 u*r=0;0 J3 u$ E1 M; a7 a% H7 y

    - e6 A  V9 P4 @- m/ k}
    7 |. i' x& v* K
    ) a4 Q' P2 m9 Sint main(){8 D6 Y3 g9 _+ W9 t+ }( D6 g
    , l" B$ P6 }+ W2 E7 q
    char a[10];) r9 ~1 Q# S! K" v; n  q2 ]7 y( Q
    char b[10];
    + Y* e) O6 V2 G/ Q$ R& N! F# cchar c[20];
    # Y& [5 f" A8 T' n! N1 n! k" Mgets(a);
    4 Y) l4 b# u4 D9 H: |printf("输入的集合A是\n");
    % ]! W0 ?! {6 xputs(a);. J6 h" `  c1 J* ?& X" p0 x! n$ x( a

    % }. A9 B6 W! Jgets(b);
    ( w0 j0 s9 m$ j$ n5 E! ?" dprintf("输入的集合B是\n");7 N8 n* z/ W6 k5 \
    puts(b);
    * L& t6 w5 z7 B2 U6 R3 f: P+ x: i& o# j) S9 p
    Union(a,b,c);
      J0 {) p* c  J+ J* `) H  Gprintf("last得到集合C是\n");9 [& r* O" X6 x! o5 v8 ^  O9 W
    puts(c);# R" V8 _, i6 {. A5 J( J) D
    return 0;# U' U' A) E0 [: J
    }
    : l% D6 h0 ~7 [# U: v, `' j  y8 U! T
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    ; {( [7 N# i+ k2 G! a9 G! u8 v#include<stdio.h>
    # y4 D% V- y/ _& q0 q' A
    9 ~  Q+ R: s. V) L) u% }  struct node& C- w) c( m2 G  k1 x+ t
    {
    3 u' v' `& d2 X& G& G        int data;. G6 j+ s+ c9 r5 H: t; {+ r3 M3 u
            struct node *next;+ ~7 v! ^* }: k% V5 b0 `5 D7 ?
    };
    , @. Q; y& \" \, e3 v//typedef struct node NODETYPE;1 f6 C/ u8 B2 [
    void main()
    3 i' u8 J# f- V9 W! |' X) i{1 p# X- p1 ?2 {  p. V% s) z
            //NODETYPE
    ; j% c( l# ?: G0 j; \        node a,b,c,*h,*p;9 H3 ^& M. g& c& f
            a.data=10;b.data=20;c.data=30;2 g4 g5 N, }7 _+ _( |9 O1 o0 ~5 [7 ~
            h=&a;
    " Q! o. p1 W% o* k( l- g+ S        a.next=&b;b.next=&c;c.next='\0';
      ?6 A1 o) N: o, U$ \* D        p=h;! }0 `: f9 }) l& ]1 w- O8 g
            while(p)
    9 n" q) A# I; X0 |& F( Q        {
    ; N1 K: ?- b5 `5 K! i" b# |. Y                printf("%d  ",p->data);+ n- }; U1 ~$ ~2 w
                    p=p->next;
    : F7 [& x% Z# f7 s( N        }
    1 V  O: H2 S* O        printf("\n");8 k6 x# [. \2 j  {( r0 O; h
    }
    % B0 O$ }- O9 @/ z  e; [2 B5 B% M, U- X, M# X$ r
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    " R- P' z" f9 z5 [0 a, R3 M#include<stdio.h>% r5 g' ]7 r, t( E9 O
    #include<stdlib.h>% N% d* Q) W" P# |* A# P: r6 N( Q1 }
    struct slist- y, E; L0 s  [5 _
    {0 X, N* ]4 J; M9 h7 ^% N' I3 `( b/ u) N
            int data;, ~8 z7 F6 z5 s1 P5 K1 a
            struct slist *next;
    4 v  A, g  G9 Q; f( O: c7 ~};
    ' n, P- J5 l' ]. itypedef struct slist SLIST;
    ( l6 z8 G( d) C) T" ^% tSLIST *creat_slist1()$ w2 T1 z/ u/ m* i
    {. P. a  n9 @( T  |. v; X
            int c;! m$ [% ^4 M0 V' M) w) X' ]/ q( ?- n
            SLIST *h,*s,*r;: S) ^2 U) ~1 e# u" g4 d
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    ; K8 [, w. e+ f7 O1 k) R- U/ l+ M        r=h;/ M8 u( s8 Y. t% L1 g
            scanf("%d",&c);' |! p% ~  u* T
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束; ]' O/ P& c2 t  u3 s9 O
            {
    0 v; O3 q: u5 J( M                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    ' P! J. D) {7 k% {                s->data=c;" j, J- }- U. L% y& {
                    r->next=s;
    ( z( ?/ p) W& o( ~8 v6 t5 n                r=s;# b6 K0 V4 X3 ]: e. b, U: Q
                    scanf("%d",&c);
    & r. x; S' c* u         
    1 T& }- i: g/ n; l        }& j+ x6 _2 s; _8 L8 M
            r->next ='\0';( ]) d; s, w: ]- P8 u: k
            return h;. X9 u1 C' x+ x9 S
    }# D& _: o3 G( D$ \* b# S

    0 g0 ?" z. U* ^) R0 _5 Z- t/*8 g; m3 H) i/ x, ~: ]+ X! y& W
    printf_list(&head)- W4 X: |9 }1 _* @/ D
    {        SLIST *h,*s,*r;7 b) S7 r" Y3 n" i& k5 B7 `, K4 V$ o
            int c;
    5 Z1 D! C3 t* z% B4 d        h=(SLIST *)malloc (sizeof(SLIST) );
    2 r7 N6 x7 l& F2 f6 q. W        r=h;
    " x# A# P1 f0 u        s->data=c;
    ( H4 \3 T) O! U  d' U/ j        //scanf("%d",&c);
    $ a1 o: n+ n+ m. l        while (c!=-1)
    / x6 k" L9 P7 y$ ~+ n0 X+ G5 G+ X2 D        {& G/ d$ `% c9 {$ \0 ?/ q
                    printf("%d",c);
    2 d" e9 ^' {% {- n! X                s=(SLIST *)malloc(sizeof(SLIST) );" F& u# j; k5 |$ w
                    s->data=c;1 `& Y  l) R0 k! j- N4 w. @
                    r->next=s;
    & G  M: ?5 z, u0 K+ h+ k                r=s;
      v0 w" y; j% e! N               
    . K/ b) ]  P( `  N         - T) o" ]2 R5 w' Z( a# V
            }  ^; T& n9 P' v- o3 y9 z
            r->next ='\0';1 v- L! v2 |+ P+ |' R
            return h;
    % t# {  K; {4 j9 f7 I; E}
    ! y& I# X1 ]5 [. T; O1 J$ l; ]*/
    7 z$ _; D/ i6 h' M& Pvoid main()
    " Y9 a7 T& h& D6 T{ SLIST *head;8 s9 a  c7 Z( {3 a0 ?5 ~

    1 D# h( g, f5 s& u& V  |8 e, Yhead=creat_slist1();                //调用链表建立函数,得到头结点地址
    " a+ A2 M# b6 g- b$ p: N" r% Vprintf_list(head)
    % H( V8 {$ v. K/ g/ x; R$ C}
    0 `3 b2 L% X4 |- G' s" h' \
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    1 N% V; B' r# B- d+ I) A' |  [+ m4 u9 M* S0 E
    #include<stdio.h>
    4 D0 V: u) ~" ?- A' d" p3 y- L #include<stdlib.h>7 F6 d2 f, W& Q
    # N3 s: x5 D! U
    struct slist% F$ n8 @9 b1 @: e0 P: K! o0 t
      {$ {1 |) h9 u1 U! X/ P/ x/ y+ T$ k. I
      int data;
    - a) p" z! w+ M- L; p  struct slist *next;* v' n, Z  Y' c4 D+ \. X7 u( C
      };2 W7 @( P3 l& I* b
      typedef struct slist SLIST;
    3 y8 m# [# {* t8 v  ~! V ; F/ b6 }0 a" C' j" L" c
    SLIST *creat_slist1()
    + h5 p* S! s7 G+ H6 u( Q* e  {
    . F2 ?$ J5 t% _7 Q" m  int c;$ ~+ o) Y" a$ M6 ]1 n  k) W9 A# ?
      SLIST *h,*s,*r;
    : E1 C' u5 V8 y' ]0 r, n  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点( n" C( R) B* ~9 ?# x% ^; Z
    r=h;: v! `3 ~" m, M
      scanf("%d",&c);* Z4 |* A) |, F# V: m3 Q; Q
      while (c!=-1) //当输入的c为-1时,代表输入结束
    + @% I0 t8 y9 V& r: q% S8 Z. Z{! |2 {# B+ y( o( F) u! A8 Z0 z& `
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
      k/ e3 v2 F3 ]1 O# ss->data=c;8 `! P  s( ]) U9 K2 l
      r->next=s;
    ' k& ]& @6 ]8 |3 K  r=s;
    ! |7 \3 n- a3 H: |* W! z; y# Y( B  scanf("%d",&c);
      o! U- z& D+ b; l2 X9 C
    " d- b  V4 x2 v1 O4 U5 N' T) ~& [}
    1 _9 Q' S2 `' P6 V5 L- `* Q: o" Y  r->next ='\0';
    7 m8 {  I2 v$ P. `  return h;
    1 Q1 V! g5 ?' T; u  }7 ~1 K/ w7 x/ \0 ^' d7 M
    + }" m7 w: t  g- L2 y2 V/ t* K
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    4 z9 C8 r- }" f% I) \% G2 r+ i/ D& Gint printf_list(SLIST *h)
    . f+ H1 w& Z' W9 P  {6 ]6 h$ O* [  H/ @8 \/ Z% o2 r
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
      U' L- L1 V; r/ Y8 g while (h->next!=0 )
    7 @$ X! r0 T9 J# r) Q  {, c+ J, [: N3 @# h( s. O4 d
      printf("%d\n",h->next->data );
    5 ^) }$ Q" i7 \1 t0 x; R/ _1 Z* a  h=h->next ;
    , r3 R. r* f- [( n( h  u- e  }
    ; c& G$ b- ~8 v1 k0 J' E  return 1;, \9 \- R! v. }; o* ?+ I
      }
    # _, _. V/ i  B/ U  /**/5 l7 a5 O4 N4 }$ t2 F
    void main()& Q# V) _6 W: K1 @4 m+ \
      { SLIST *head;/ g- k7 ?, m0 a3 |3 e4 Q

    - [5 I4 q, i+ M7 rhead=creat_slist1(); //调用链表建立函数,得到头结点地址
    : N! H% _+ ~) U. v  ^( m/ g8 Iprintf_list(head);
    / p: s$ K3 V- Q( T* {; f  }: Z/ u* q* S& v3 k4 q3 z! z
    ) o/ c) b8 O- _8 }1 I
    9 b6 q# f* a3 ~9 u( I1 b
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-15 14:18 , Processed in 0.444434 second(s), 83 queries .

    回顶部