QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2306|回复: 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 编辑 & E; D8 f: v# `/ |- p+ {& f  J

    ( U6 i7 g8 @& g4 u0 C计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。% D, T1 K- A5 O
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。0 {& ~6 n% p: f: z' M% |; 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集合。6 E+ {* e/ \7 I/ {- v
    这个代码是用数组的、算是比较简单的。8 R# d" r& j( v  G7 c8 P* ?* m

      h6 f! s1 x+ \8 T( J  Y3 U- x0 [#include<stdio.h># K4 x; @  G. e2 |# a% r
    int L_length(char []);( ?7 \( q! I1 i+ {& i
    int main(){/ ?+ |% y8 k% W% b6 ]5 M6 u* b
            void Union(char [],char [],char []);
    3 A5 Q2 K: f$ x8 z6 R& {! w+ t' N( H* A2 I0 L
            char a[10];- Q$ C+ v* s: Y" H$ g
            char b[10];$ G. I# O+ u- B9 @
            char c[20];
    3 V/ f: Y& Y  p# B( P  E& @        gets(a);. `. @: A# t8 ]0 n/ u2 x5 ]
            printf("输入的集合A是\n");
    / N8 v) g/ R4 l* ]        puts(a);
      O4 o$ ]% U0 _: S/ |) e
    $ p+ d: r( `3 g. n9 U3 X/ G        gets(b);
    + r% m. _, c# x* @9 T4 v        printf("输入的集合B是\n");% ^0 \/ W$ }3 C( ?8 w
            puts(b);
    $ |. e- s6 r- _3 Q( S; H  r) [* w$ a/ P" t$ c
            Union( a, b, c);
    $ ?- z! ?# H' T" T1 e3 V( q% @3 N        printf("last得到集合C是\n");% t. H- W& N9 l  S8 N$ m
            puts(c);( D3 Q2 b7 K1 D' ^
            return 0;/ Q6 ]  P0 l3 }, A, t  p& v, j" D
    }
    0 S; G' h2 R, }/ C, Q; O0 U: j* x5 H  t( z4 _1 T
    void Union(char a[],char b[],char c[])8 v( D9 ~7 j  Y8 N% d: v. h& ^
    {( Y+ @" ?& o% c' B$ {# q
            int flag=1,t=0,i,j,m,n;6 F+ p. M# j- `, ^' b
            m=L_length(b);
    - O. r4 r3 a  u3 X7 D+ a9 a        n=L_length(a);6 O& e  C' w' B, v) A
            for(j=0;j<n;j++)
    2 b  Y2 y! ]. a0 `) }8 j7 s: D        c[j]=a[j];
    0 o( Y6 P  M* C# U        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
      u" Y. S" l0 U- G- U. C! G5 x% m                {for(j=0;j<n;j++)! {" k; p' Z4 z- _2 J
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    " c0 \3 j$ X. E9 r9 L+ v7 d: N                        if(flag) {  c[n+t]=b[i];t++        ;}
    ( \9 R( f, G4 P, E                }: D! \. r' o. {
            c[n+t]='\0';- s; A) `6 M  e' S- G
    9 C' f/ e$ Z- P2 k% B
    }
    2 J# _' k* @8 B, z( X5 Q9 G
    ' x& R1 T, C4 j3 Vint L_length(char a[])
    3 ^5 |- O9 ~2 e$ q{" r% X  a3 N! i) c. O% C
            int i,t=0;;! D" Y- |! I- b$ k% s# k/ ^* O: t
            for(i=0; a[i]!='\0';i++  )4 _* X% ?" s& c( G5 t& {* n. b
                            t++;
    $ l" ~0 r/ v. X8 X9 }2 C$ p        return t;; P7 l* D4 X  }, z. G& K
    }
    9 W, j# c0 x! ]2 e# q+ q- N  {, M0 o: H6 {1 a5 x+ B) Q
    回复

    使用道具 举报

    慢跑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 编辑
    * O, ~* Z/ ^, w' `( Q  k( O: u8 ?6 Z/ ]. g" e: B% d
    li2.1yong用指针:. W: L0 X2 S& V1 r

    ( u3 U* q2 y! l: h8 ^#include "stdio.h"- I/ I6 v# Z9 ~
    #include "string.h"
    3 A' U' C! g( zvoid Union(char *a,char *b,char *c); o: T: i  {6 y7 U: `( E- E
    {+ V: d, u1 I; Y" m; L& S& a; ^7 k7 ?
    char *p=a;
    ) z8 ~* A: Y5 t3 e! z( C' f0 Zchar *q=b;
    ; n9 T, h3 h6 Q& t" ]& a: A: xchar *r=c;
    ( B/ z7 v5 i! M# d$ P8 Uwhile(*p) *r++=*p++;
    # O- ~5 J# t: b# f: sp=a;+ T4 Y7 u4 \: O/ i
    for(  ;*q!=0 ; q++,p=a  )- `- V$ f  L! S' |& u- e
    {while(*p)
    9 s. ^) N" m" `if(*q==*p){q++;p=a;}# Y( B* j$ X( F! C" z( {
    else p++;5 u6 I7 m7 \( r1 _/ ^
    *r=*q;# ^, p1 f, w+ u( T3 u, M
    r++;  q4 f. i2 v/ o
    }
    2 ^+ ]  l3 q1 g6 a*r=0;- J/ e5 H) w1 |- s- D4 k
    3 W9 }, P+ K% Y- u7 b
    }7 p9 k  v) O  ]; [+ ]0 Z- A, H

    . i# n! ]- I, i* f) L7 gint main(){
    0 S# ]7 u7 d: [  L) X
    0 H1 `7 `7 F3 N1 I8 `; s9 b. \, schar a[10];- U/ j2 S6 w2 a
    char b[10];2 }- b4 a% r4 x) T) ?% w9 s( k7 k
    char c[20];* Y* W1 R+ W- S+ s1 S0 Y1 I2 \! M
    gets(a);
    $ ?' I  P- t/ `8 oprintf("输入的集合A是\n");! i( w/ U2 d; I  h/ o- ?5 J
    puts(a);
    # d" I  g- s( t6 Z- H/ [; y2 W9 R2 z. A9 X) C
    gets(b);& I; t. S4 a2 N  f( p# p6 D1 @
    printf("输入的集合B是\n");; `9 {- [2 X/ k$ k
    puts(b);% R, E, J$ s2 \9 X

    ( H" x8 Z9 N+ V* t! E0 YUnion(a,b,c);6 q5 X) q  Z# K9 j
    printf("last得到集合C是\n");. K; ~( b- p5 O! i) K# Z% k
    puts(c);4 i9 f" L, g4 _( a8 x, h
    return 0;3 @: ^9 Z3 ]5 j: K& Y' {5 ~& b2 g: F9 J
    }
    3 M* d0 y& l4 l. g5 @* ~' A  x
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:' a$ C3 K% s8 D1 \9 D. F: T. @
    #include<stdio.h>
    ) f; v9 l6 g, y- `3 g
    6 z; l2 F# ^( O, n1 B  struct node
    + G% g& g- O: V, I2 t9 z1 p{9 K/ o# [! T& m/ e8 o6 m' |
            int data;
    7 d! u# C/ a6 C1 j' d, m* k$ m! l        struct node *next;
    2 z: Y6 O+ H) l/ d8 k* X};+ O' c3 n. E! H" F7 K/ @& P
    //typedef struct node NODETYPE;
    . g( M2 K' \# E, U. |# `7 hvoid main()
    3 i7 W/ N. Y+ k% p, B* Y% ^, I{! c. L# V* s7 V) J
            //NODETYPE& j( f) D/ E9 O/ `/ m$ f
            node a,b,c,*h,*p;
    # e) M) T$ O$ V/ x/ {        a.data=10;b.data=20;c.data=30;+ \' w+ R) C/ p  R3 h* E
            h=&a;1 J5 ^3 L5 b) B! |7 z+ i- A
            a.next=&b;b.next=&c;c.next='\0';
    9 c7 C6 v7 T  b        p=h;/ l+ l" {8 Y3 K1 g, g. m
            while(p)
    / p, {/ ]4 X7 l+ u! ?, U        {
    7 Q0 o9 i' ~8 p# u; m                printf("%d  ",p->data);: r8 b. |0 v; q* H' Q3 T% T
                    p=p->next;
    6 Y  e; h$ w/ s5 y        }$ u. I5 [- p* n: w" p
            printf("\n");, P  D$ q2 [/ ?( T; q
    }
    + c. h, A# w4 j4 P0 j, ^$ n5 R0 f
    - X% l+ l1 z- W5 O2 Y# p* c1 O这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    2 ?! G, X4 o( V* B4 Z8 P- x3 s#include<stdio.h>
    9 l, R% h( U- y+ P: }#include<stdlib.h>
    * M2 u) o0 o( V( I$ i& ^! F) Wstruct slist
    3 h- \! w( B$ K$ }( Z0 j{
    " a# {+ u1 a; \+ c$ T        int data;6 o, W* ]# I3 g  L5 g( _: C5 f
            struct slist *next;
    5 h5 S; w, c+ o# ~8 {) Y}; 8 Y' m3 W- M# X  @( V2 s, _
    typedef struct slist SLIST;0 i- B2 {9 d9 [( w
    SLIST *creat_slist1(): V3 k  Z$ k) G6 {
    {0 A& v5 Z8 I2 L9 ^. Y; [
            int c;
    9 s" K' ~2 C* \. u# B6 Y6 ^        SLIST *h,*s,*r;
    + D  r  l. @4 A$ `        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点+ c, G. @9 p0 \) E
            r=h;
    : D) r8 w+ \, c( X4 C' e        scanf("%d",&c);
    / E0 k3 S' A. P+ a- o0 N7 ?+ l        while (c!=-1)                                        //当输入的c为-1时,代表输入结束9 K4 G: i$ ]& {) \# W
            {
      ?9 H% i, p. b* O, }                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点* Y) [% ]3 N2 i- ]6 B/ @
                    s->data=c;" B1 d( R- ^- ?) Y1 m) U
                    r->next=s;
      K: i) r0 n2 t0 ~; B$ W2 k# ~                r=s;6 _& v% m+ {$ f$ y5 R& e, D' Y. h
                    scanf("%d",&c);& ]) j, p- H7 a
             - g! Y2 J" v/ B
            }
    9 Z  W4 b4 Q$ v# E' ~        r->next ='\0';7 C- x$ s8 U, I6 l  C. H; t
            return h;
    7 M2 F% Y3 f' ^% U}
    5 A) i/ g( F, I3 j. R  o& e6 u2 z4 _2 k% a
    /*
    ( T% |5 |& n1 \& J6 y" w& yprintf_list(&head)2 L4 F4 e% v3 p
    {        SLIST *h,*s,*r;
    3 E1 E' B/ ~/ J        int c;
    4 |( n+ W; Y. m: v0 O2 F* ^        h=(SLIST *)malloc (sizeof(SLIST) );
    % C% w$ g5 b; y2 s2 A8 h9 z        r=h;: ?% H1 J$ U0 l: i+ Y
            s->data=c;
    % D( {# o+ f9 V& N" r! _        //scanf("%d",&c);( L3 c4 R6 N4 f! ?8 k2 I# y
            while (c!=-1); K! f$ {* L/ K' C7 X
            {
    9 Z3 ~( V8 {+ N8 s                printf("%d",c);" q2 ]" R% g6 M' v4 q' a5 S8 K9 T
                    s=(SLIST *)malloc(sizeof(SLIST) );
    + }  D' \, D9 ~6 y                s->data=c;
    - T9 }# ?5 v! u( X                r->next=s;
    " @! n8 C3 r1 t0 f# d- K' P                r=s;+ l0 q# z: v% W5 a, S7 ~) P
                   
    ! k- y8 X2 X6 H, W         
    - m! J" n; {" ^. }2 _' d        }! Q+ w/ ?- ]; ~" C; Q: W
            r->next ='\0';: I$ N6 [0 |+ A5 u" {
            return h;! r% \3 P9 G: v% O, ?9 i
    }
    & l3 {5 R% h9 G( f0 _1 p" M*/
    8 G7 ~/ K% T' j5 R  @) Rvoid main(); g  Q( A- a% V5 e/ P) I) R3 ]) r
    { SLIST *head;" J/ ~8 R: ^8 }

    # Q' u* ?  w( B# t; Fhead=creat_slist1();                //调用链表建立函数,得到头结点地址9 a9 A( c% R2 }2 q0 O3 V
    printf_list(head)1 H$ _& Q1 @. y$ Y; C( M* t
    }
    + E+ l' {/ H; Y5 I8 C
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。0 c+ b$ c4 |/ F# K, m' G5 c: _

    % P8 f: T! B! u7 l8 D#include<stdio.h>' A  ^1 T. f: X. ^
    #include<stdlib.h>2 j3 P6 E/ ~) [0 L
    . ]% f/ @$ @, `- L: Y0 e
    struct slist% H* B8 ?; ~- l6 q$ h$ z
      {
    , W; J/ @# Y' V7 f( p9 _; j  int data;
    " s2 {6 s7 @# p$ w" L6 x% A  struct slist *next;. U. g* Y9 U+ k
      };
    ! W0 s7 [" y+ j" H  typedef struct slist SLIST;' x- }1 o3 j6 R! T# P0 F6 \
    . w3 V# Z% ^0 X$ m; r) G. T  m: N4 K& F
    SLIST *creat_slist1()) `, r" s/ u8 W5 p8 {
      {+ l6 H% y& Z; P3 _: l4 Y5 I
      int c;7 a( m" u0 d, A+ D
      SLIST *h,*s,*r;% {: X' k0 \6 Z4 [5 t5 V
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    . T" M: c/ Z! E* Ir=h;
    * ?1 N! m: s; ^  scanf("%d",&c);
    2 ~0 j% k3 R$ q  K  while (c!=-1) //当输入的c为-1时,代表输入结束: E( h! }- d: L3 F
    {: }/ f* ?1 \$ H8 N+ h
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点; g- D( z6 E+ b
    s->data=c;0 I$ o, a4 y, g, b$ L- U
      r->next=s;0 R3 s: g; \1 U# g- ?, I+ ~5 S# G4 B% L# \
      r=s;8 f$ H$ `6 n# m# M- F
      scanf("%d",&c);8 |7 x$ r0 a9 J- {+ g, D

    + F8 k& J0 ]  n! ~! s& M}/ W$ M7 Z1 X+ M1 D% Z
      r->next ='\0';' Y; X1 z  D& s. V- E
      return h;
    ! }( s% ], x1 w; c  }7 Y$ T9 f  o  G) \( F
    # W! X: v# x* P; B7 T0 t
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?$ R7 X# c2 c3 N8 r1 I# I
    int printf_list(SLIST *h)  s1 Y" @1 W' X9 X2 S& @
      {
    6 f0 F! g. @0 A  e0 K+ Z- h3 \  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚8 q; z% T$ L& t- d& b
    while (h->next!=0 )
    ; f! ~+ {" _  E  {
    + s2 ]/ P* T  q  printf("%d\n",h->next->data );) x- @  e7 j. u( k. k. n
      h=h->next ;
      r- }: z: S0 s" F$ g, F  }
    ) ?0 z3 K$ V% Y! o  return 1;
    2 I  c% P2 s" b' D  }
    6 @+ P/ b$ R7 A, R. c6 ]& t  /**/: X5 P- d2 V5 i! k
    void main()
    7 c; P: F# q; o1 z- T/ }# r) R  { SLIST *head;
    % ~' t* @  `, K4 C
    ' S4 L% A) t0 H' @7 E/ r7 qhead=creat_slist1(); //调用链表建立函数,得到头结点地址3 T4 ]) N& L- n4 S* A( A1 x: {% l+ w
    printf_list(head);6 P1 R- J" u# W
      }
    $ c4 k, _/ _! d& R% e: n: T
    # T8 g; Y2 ?3 z: q( }5 K8 j& x4 j  R8 c6 g
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-4-14 22:33 , Processed in 0.424505 second(s), 83 queries .

    回顶部