QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2431|回复: 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 编辑
    8 I$ T* g. w( ~/ C! m5 d5 j+ W0 z8 T& ^* F1 o& ^! y
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    - s5 h0 Z, X& J9 Y# w刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。3 F6 ^) g% R; |& U; ]4 N
    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集合。5 H; L$ N# U  d( u  d- k
    这个代码是用数组的、算是比较简单的。% F* z: Z, N7 J5 K! l" W
    1 ]/ W: W# L3 O8 P) l  K$ @4 F  @
    #include<stdio.h>
    $ E1 m& B; N. cint L_length(char []);
    * l9 [. j- R, I9 C" bint main(){
    4 k' f. F- Q$ S, ]7 x5 b4 n        void Union(char [],char [],char []);6 X. B: V  F  w4 v
    ) v1 w$ u2 t3 W0 f6 L* ^$ ^
            char a[10];: a9 ?7 ~/ `! P' K
            char b[10];
    ' W0 Z! q" m' n& w: L        char c[20];+ L) k# I* W+ Q7 ^( z6 M. `. r$ b( }& o
            gets(a);' F6 S5 y& L1 \$ v
            printf("输入的集合A是\n");
    , Q; H) ^7 B3 M1 v7 `9 t        puts(a);7 a' h1 a) c" E- ~3 i. q  ?
    % J6 T- I/ c/ i9 A
            gets(b);
    7 E4 b9 W8 g: Z* {. t2 S        printf("输入的集合B是\n");
    ; E% l2 R' |" y        puts(b);
    , ]. W2 ^# p1 F7 ^. j' {5 }+ x# c7 |" N2 h, n8 G
            Union( a, b, c);& j, x* u% B  f5 \& B' i/ w+ I; P$ R7 ~
            printf("last得到集合C是\n");3 b) z; O$ L  n1 Z5 Q' A0 `
            puts(c);; E6 |* O$ g  y
            return 0;
    : J5 Y) ^, s$ S& q8 a6 J# n! E}( X( W5 s8 A- }. B! r) v
      L2 t3 y0 w; U
    void Union(char a[],char b[],char c[])
    1 A8 f) s" b$ O& T& s4 o/ V/ ^1 [" Y{+ C  |( [: ^  I6 `7 `
            int flag=1,t=0,i,j,m,n;' C; w4 a* j0 o; ?/ G$ l8 R* z
            m=L_length(b);
    # C) _" Z: H; X8 K        n=L_length(a);
    2 E  Y% v( s0 ~9 G3 g        for(j=0;j<n;j++)
    ( o6 t4 [, f: K& s; x7 F        c[j]=a[j];
    ' A1 W; n& \( W* D        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    3 H7 }, ?4 ]7 e                {for(j=0;j<n;j++)
    # f5 I2 F5 \* b( a* b8 t+ Z                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    7 U, x8 u& B1 y# [                        if(flag) {  c[n+t]=b[i];t++        ;}* Q" q/ a4 K; m
                    }. ]+ q4 ^" ~6 U4 Y7 o
            c[n+t]='\0';. K# {$ m; z* X* k% B  N) _, S' P9 x, ]

    ( @! }+ V7 ]4 S/ {/ x* x7 Y}- W5 e  ^! F! `% a( d! H- B; j9 {
    * Z% M1 [1 z! U- b
    int L_length(char a[])
      [+ n/ k4 J& x. W# h* J; @{
    0 r7 A$ i% J' J* a9 m        int i,t=0;;
    + A8 c, d% ]0 _& G# _        for(i=0; a[i]!='\0';i++  )! Z2 `3 @( B8 M$ s. h% N
                            t++;. ^$ d. Q+ S7 x4 o4 f
            return t;
    . h# F% O6 d( j}
    & q* I$ V/ W% f- Z" I. q5 E/ N% I9 h" s/ N  [* 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 编辑
    2 x, Y/ y9 K5 U' Z% T9 K0 n' g) N8 I5 h# N
    li2.1yong用指针:6 C% T* L: r; Z  k' e+ A2 l- J

    , v) W5 b/ `" v' x+ }#include "stdio.h"0 i+ w7 d5 K' e' k! p
    #include "string.h"3 `) W4 E8 g, g  B9 ~
    void Union(char *a,char *b,char *c): O3 x, [- @3 K; _# J( L) y
    {
    9 U% ?7 g5 l' t; X6 ~" V2 w  Cchar *p=a;" [, ~0 f: W5 q2 `6 w) W( F
    char *q=b;
    1 j1 P/ a& G4 M& U3 e/ lchar *r=c;7 Z3 {, I- j7 C2 V! r+ r9 y8 ~
    while(*p) *r++=*p++;
    1 K; i4 D4 H% _' L% v4 k" o" S- mp=a;9 ]7 W" A5 Q! ?# c
    for(  ;*q!=0 ; q++,p=a  ), [) j+ e8 y& l& J' y0 M3 K
    {while(*p)
    % D% s7 ]: U" g* U( p2 s; Aif(*q==*p){q++;p=a;}) V9 e# }8 W/ d9 T% H
    else p++;* {$ R5 o4 ?6 ]2 v6 K  c; L
    *r=*q;- \# a" A6 X: `
    r++;* p3 `2 r3 [0 T4 M' m4 x& v7 P
    }
    1 Q3 x; C! H6 d4 _$ ^* T8 ?*r=0;7 f& v' _  U, |9 Q9 x/ h# ]  K  ]

    , b  _" `2 \  F6 r}
    0 n+ l- K# [4 K- [  D& D# v* t1 J8 K  T3 R8 u! [
    int main(){8 q1 f+ f1 |- l( [# S5 m
      C( M4 U3 e* n2 p( \0 n( y
    char a[10];
    ( b. U0 ]6 c7 T1 x0 C+ E1 j/ F6 U( Dchar b[10];# `. H1 d+ I1 r. p6 z. I
    char c[20];
    . O# W  ~+ s# o& [4 y/ W3 Vgets(a);
    % Q+ ^% @* P7 p' P4 T3 p- F3 Z- tprintf("输入的集合A是\n");6 w( @' D- w9 X, a. t+ V0 x
    puts(a);) a' f( N5 l  ~  k& f/ n; J
    0 d8 L7 B: p  {4 v6 q4 R! p6 D! v
    gets(b);
    ) `: C( r" ]8 G/ Zprintf("输入的集合B是\n");5 }/ \# x* \3 y7 d3 h7 u
    puts(b);
    ' c! N2 q7 P, f/ C8 a3 M; u- `$ ?6 Y
    2 V: |) ?: z! Q4 D4 s/ w; gUnion(a,b,c);8 e0 M# d7 L6 Q7 J: |2 @5 b; ~; N
    printf("last得到集合C是\n");  W. O1 O( t& y! E' p1 z+ x
    puts(c);
    4 e: N7 O1 p* K/ }/ Qreturn 0;1 T" @1 b' Y6 b' d8 w. C
    }. c. j4 j2 g+ z  L, C* M! {! \( ^
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:# J3 u" H* v& \4 [+ x1 K9 H/ p
    #include<stdio.h>3 K+ E# B" Y* S2 {1 R$ ?, [5 C

    " H  H' b. h+ d: B  struct node
    0 k, A1 ?: w4 C* I! L9 y1 y3 O{; ~& {% U5 [6 h! Y
            int data;
    & s" s; }4 K% I2 Y; b- d3 v- e        struct node *next;
    # S- Z( B0 b( ~. S! l1 X};* j6 Z9 |. f5 k9 {/ }2 Y
    //typedef struct node NODETYPE;5 ~. p0 f8 `0 H$ g6 f* x+ }
    void main()$ p/ B4 u' O2 d
    {0 _' L- z2 k- q5 j. W6 M" j
            //NODETYPE
    6 t2 X( Q$ \* ~! r% k; z        node a,b,c,*h,*p;* d, s* Z4 o  u/ G; a
            a.data=10;b.data=20;c.data=30;" o, u6 F$ a( M5 H
            h=&a;
    9 l9 R2 }  c  i4 V. a( I        a.next=&b;b.next=&c;c.next='\0';
    ) N5 o1 i% k/ z' \+ {6 B( }        p=h;0 O2 Q9 o5 i* }9 p7 y
            while(p)) @+ P% D( r/ j/ `
            {
    1 U$ m+ c5 W. j1 ^: P                printf("%d  ",p->data);( C+ R( @* l8 f4 m$ y+ L
                    p=p->next;
    0 ?5 m( h; q9 u4 u6 W5 t        }
    8 E: e! B! O  W# T( m+ n" r8 i        printf("\n");
    ; j$ c* {. N: ~}+ O; V" {4 w' H- |  g' V
    5 k' U# M! U# |  a
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    4 z' F# r8 M: C( y3 ~#include<stdio.h>  C) ]' F! n# V. `3 H4 V
    #include<stdlib.h>! F6 c9 i* f) T1 s" @5 }
    struct slist( D- L' u. h7 _( S- d
    {
    . z2 q$ W8 N6 i6 V- W+ o        int data;- q# U/ ^: v& G
            struct slist *next;# L3 T4 n8 K* H+ [
    }; 8 ~( u5 E+ K( w9 z: K1 U( q# B
    typedef struct slist SLIST;' E. Q# _! a/ F3 x+ }2 ]
    SLIST *creat_slist1()- Y5 ]% u3 K4 v- a3 H7 t- o
    {
    : A; k/ E- P! V        int c;
    ) p: S+ l' m' ^        SLIST *h,*s,*r;4 e# q7 p3 I4 Z
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
      [) x* U/ v9 k3 e! B  ?        r=h;
    8 q. R' i5 K# m% [        scanf("%d",&c);
    ; b* U& V: e1 ^5 u4 T3 {8 G        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    * P# S; _+ g! O2 d        {- l6 j, b( c' K' Z. D+ b
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点/ y9 n- [( L5 c
                    s->data=c;; r7 c# t' l1 K- d) p* d8 i
                    r->next=s;
    - n$ V4 G+ Q2 i/ Z! [, h2 t2 n                r=s;) X- q- g: `2 h) K9 I3 s0 A
                    scanf("%d",&c);
      K9 Z  o3 K( o4 Q* j         . `/ y& l! u/ o* q: U7 u
            }
    + s9 A9 ^0 J- W0 {. ^/ m        r->next ='\0';
    & g, N* Z) g* T5 P5 r. ?        return h;6 g( s. y: B$ Z0 {4 f+ r" }* h
    }
    . u1 h/ ?7 }) f* `% F
    3 `( G4 R" _# j/*; Y' S! s1 r0 M! H) R
    printf_list(&head)
    - X" F' S' N: D{        SLIST *h,*s,*r;
    - D+ ]7 f+ K) ^7 S) F3 \        int c;
    ' j( w- G' K: i7 `- J        h=(SLIST *)malloc (sizeof(SLIST) );
    / J+ k- Y6 T% R  C: j3 X( W        r=h;; o# s8 W, J. w+ I( ^* |" w' a
            s->data=c;
    & X+ F) G3 o1 Y) W/ V+ X" K6 U        //scanf("%d",&c);
    + U! }/ \+ r+ k$ y0 c, T2 N4 i        while (c!=-1). J7 T: w8 m) S1 n) g- E
            {8 X- J( q( Y0 @9 o& c' l! t
                    printf("%d",c);
    ) \" ]* ~( F% J# H                s=(SLIST *)malloc(sizeof(SLIST) );
    $ Y+ V4 G: b3 N) }! w- ]                s->data=c;4 V* R( b7 E/ y" O$ F5 e
                    r->next=s;
    8 y+ v( N# ^* ]; E4 |: [                r=s;
    " R" v# ]+ H1 K& r1 C( K& z9 k                8 i3 H7 ^: l* Y
             " B& ~) l) s4 r" W" S
            }
    3 T  k1 k$ G6 h' @        r->next ='\0';2 o2 A" g  ^2 C7 [
            return h;
      ^- Y5 h7 o) o& p. {4 n}
    : p# f3 V# D7 n% |  c*/
    / q- E5 D( z- D% g0 o1 ~1 g6 Dvoid main()6 r, y; v) B7 V  u$ N" N; \
    { SLIST *head;
    # o6 J( \; R. F. S
    ! z" ^4 w6 Q) a; k% |  C$ Qhead=creat_slist1();                //调用链表建立函数,得到头结点地址# ?! [  E" H/ A4 b
    printf_list(head)+ N# m' b0 ^$ }2 d' H8 e8 x
    }0 Q& ^0 N% j, Y' r: ]3 c/ x# T) x" l
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    0 r3 {, }) f! w# [+ f1 v8 d6 L' k8 ~$ e* f5 I$ y; @
    #include<stdio.h>' S8 \7 Y! i- z* F& L
    #include<stdlib.h>! m; p) ?0 \  z/ q

    " o7 P) q0 O6 @- J+ n7 t. i/ Q( g# a struct slist
    7 V, Q" ^! x1 A: E  {* B& B, s! L# X0 |% y1 d$ X  V  G
      int data;
    : P) k, e1 ~5 v9 \  struct slist *next;
    + E, U+ y1 a* v7 j5 v4 F& |3 f. g  };
    8 Z& q. @# ^$ v9 }* Z  typedef struct slist SLIST;
    3 B" ^- Z8 h! s: M1 C) n. L % ^4 f2 b$ s' f+ p5 G
    SLIST *creat_slist1()3 M/ @9 G( g- P) R  o
      {8 Y# O; w# O/ Z( c# u8 d
      int c;
    , C5 M( ~+ l( C" s2 F* g, e  SLIST *h,*s,*r;1 v7 o0 [- L! ]1 h' C5 T+ U) K
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    ' @  \" o  F; p$ ~2 Sr=h;
    8 b  Z) Y' [/ z( g( h5 `: Y1 t. L1 }% l) E  scanf("%d",&c);
    6 F' q/ ~$ t) u$ `) ^" K  while (c!=-1) //当输入的c为-1时,代表输入结束
    * ^) X1 [0 k! W2 V$ }0 l% v% X{) i8 A0 C2 f# q  q% F* ^
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点; c2 R& }+ P, T2 a
    s->data=c;5 [" u2 E5 z' K1 l
      r->next=s;9 c3 C/ m5 a8 H: }
      r=s;4 n" I, M! Y: K
      scanf("%d",&c);
    4 y0 H$ y+ U! Z
    ; V: s( t4 H7 c}
    ' y# c5 P. X9 h! n9 a- V  r->next ='\0';
    - A$ y! p6 Y& v8 y  return h;8 e1 C4 G- G1 L  z* n
      }
    ; j0 J! \; P0 n: k- ~8 g" F 7 p# Y* q  @2 j/ s9 a3 y
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    " q- u, T% [4 l* @int printf_list(SLIST *h)
    6 `; _7 ?( b- ]: j* \, ?  {$ j1 B, f* v! `& j
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚7 W: ]+ p. ?( f: s# U% J3 s# M* Y
    while (h->next!=0 )
    " A6 F! `9 n, O( N3 ?' E& `# s  {
    0 C3 p, o6 E6 U  printf("%d\n",h->next->data );
    : l9 C& V5 O; T5 D/ ~  h=h->next ;
      V. m6 M0 C$ G  }
    5 |+ p- c2 h1 N" n! s9 x: [* H  return 1;
    ' T$ e0 a/ V- j  }
    : {8 Q( ?; q( \  /**/
    . m0 j2 i4 {4 N- P+ U# w void main()
    5 [, Z) J1 D7 `: K2 Z  {; D) f  { SLIST *head;
    , ]4 o2 b9 h0 o# {( W  \
    ) n; ^; z2 O8 {+ y3 \head=creat_slist1(); //调用链表建立函数,得到头结点地址% H1 U, d# u+ ?5 N$ B5 Q
    printf_list(head);" U1 l. e+ k' _. e0 h6 @/ l
      }
    8 D; L' L% l5 f: x' u5 [
    " @! J4 ?) s+ g: J2 [' O2 H5 b* ]" ]8 K" E& D
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-8-28 17:52 , Processed in 0.486570 second(s), 90 queries .

    回顶部