QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2361|回复: 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 编辑
    + s$ m' ]6 {9 a: I# V: s8 D
    " J' e! [* w; {5 L/ r0 [计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    9 Q; ~2 @1 K! n: d# K6 K刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。( C$ {! D2 F8 m0 m( P; T. e
    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集合。. n2 m6 ]# V1 ~' i& ?. e
    这个代码是用数组的、算是比较简单的。; Q# ]% a+ M+ w0 X% R
    7 e/ W0 ~" v" K
    #include<stdio.h>7 @- l3 m- e' @: Z; X
    int L_length(char []);
    , e# m. a  P* a$ }; Iint main(){! B% a5 T- P. L+ Q5 g$ i$ _1 }- J
            void Union(char [],char [],char []);
    4 v9 Y+ |: X/ A' P; e/ M% I
    % P0 m$ \  r  m  E* X: ?5 Z# R        char a[10];5 g. }+ T! g' u! S  M" i) U
            char b[10];
    % ~0 t# E! _. w7 l) n9 s        char c[20];; O& E5 H; A5 _8 o
            gets(a);
      j% g" \5 V# K& i4 }' C        printf("输入的集合A是\n");
    4 R! |) E, d# {7 b- Y        puts(a);
    $ }. O$ E" j& [, y8 ~" m6 Z " I8 ^# b) \) {0 e6 H: @; n, i  @/ k
            gets(b);
    ! T1 ~- S+ {+ q; J7 j        printf("输入的集合B是\n");3 q% |: z' `, b- q) ?! Z  T# k
            puts(b);0 N/ }  v  h' }6 e. S5 {

    & G9 M' t1 F  m$ I: E5 P: E        Union( a, b, c);, h- Q; c  H. N4 V) h
            printf("last得到集合C是\n");
    # C8 `% }* Q2 L5 {* }4 n        puts(c);
    6 m2 s  [3 M2 c, ~        return 0;* m& L& ~& N. m3 H5 T
    }
    , c/ I( z" Q  m' B0 b( ?/ R; y$ ^' n( N
    ( K1 u, ]8 d$ t& E$ r4 E7 @void Union(char a[],char b[],char c[])
    7 b& y, H# X* c) S2 E{2 b5 h- b/ D, z0 ^; N% l8 P
            int flag=1,t=0,i,j,m,n;
      k1 k! N' Y8 s7 v+ N) P+ s& l1 ^6 M        m=L_length(b);
    " A  q0 r4 h7 h! G* n: ]        n=L_length(a);
    , i. \. L4 _+ M3 n; }+ K* D        for(j=0;j<n;j++)
    2 N) Z! ^: j0 M5 X- u, j        c[j]=a[j];
    $ A- h, m1 b- g$ t- s        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    ! ~3 J& ]$ C8 H4 `                {for(j=0;j<n;j++)- ^1 [+ b$ f4 J* ]1 d
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了. D6 H' G/ g& \
                            if(flag) {  c[n+t]=b[i];t++        ;}
    7 i% l+ r2 M- E2 M1 M& ^                }6 o* K9 C! g. d0 S6 Y8 K
            c[n+t]='\0';
      w5 g. i% Z% g+ u5 P * c2 `9 I& Z$ H! A5 W. ]( }
    }- g5 J2 Z4 P7 {0 v4 @

    - {5 |* H6 L5 G: A  V3 y8 I' Z: sint L_length(char a[])& t2 P" p" g2 {/ y0 N' m  k
    {% c' T" @. P& W* W% I7 x
            int i,t=0;;8 j' s+ P- a7 L  `
            for(i=0; a[i]!='\0';i++  )
    " M+ w, e8 s- {# W/ k5 W+ G                        t++;
    $ \" p9 H% {( l$ o2 C' S        return t;
    3 R: v' Q9 U1 p$ p2 g}
    $ f$ H& B' H! S# }9 {
    9 R* @  ?# E. z3 m1 M' A2 R# 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 编辑 # b6 V3 y6 ?: d3 D9 m
    0 ]' |) E% L. N3 f* o
    li2.1yong用指针:
    / a% f) ?. L0 W1 L; M% F
    ( J4 p! \* W: i4 a6 }$ B#include "stdio.h"* J! C' E6 K% z  E. G/ }2 o* }
    #include "string.h"
    # ?" ?6 r9 b" S4 C9 [3 X0 yvoid Union(char *a,char *b,char *c)% C) ]* @1 _$ ]1 r: [" @! v
    {, m+ L' y! D# f4 j" [* N" T4 R
    char *p=a;
    " p) g* o' T" E! G7 [( ~) H4 z2 a! hchar *q=b;8 J/ T# Z, h7 w# M) _9 }( J
    char *r=c;0 a2 z0 A+ v+ I2 t7 j6 X
    while(*p) *r++=*p++;1 q7 p' I* L3 T5 _- T% X
    p=a;3 F8 o, r5 s; Y9 t" m0 @$ ?, F7 e
    for(  ;*q!=0 ; q++,p=a  )" z; X5 K! z6 N. o, _1 m
    {while(*p)# ^" G9 Z  t; a, w; g
    if(*q==*p){q++;p=a;}3 e) F# V; @/ \
    else p++;% \9 O2 _) @! c' Y
    *r=*q;
    0 v0 `! t% |% o9 Ur++;
    9 k1 q# j4 z; P}1 |* l( v7 N# P2 ?& h; P
    *r=0;
    $ S# W* s7 \/ c! y% F* H* |4 H3 U4 i& V
    }
    & ^$ w- s: u, G; ]- |$ t4 J
    $ {- V2 j7 ?* |% x) dint main(){
    7 c+ b, \9 q8 G3 p7 }2 m  Z# Y. {0 v2 s! {
    char a[10];; Y7 p8 R) f  v- O* W) k
    char b[10];) r: {; ?( \2 n1 y3 a' Y
    char c[20];
    # y# ?$ \3 D2 q. kgets(a);5 |' {2 ~! d# v
    printf("输入的集合A是\n");
    $ J) e; }3 I$ l0 b4 kputs(a);
    ) C0 b) L# p+ q" n. K2 G9 P) I! \+ q( l) ^* N7 C
    gets(b);
    8 H4 v: H" s- e3 C! Gprintf("输入的集合B是\n");3 R, q: O3 {7 g% A
    puts(b);/ j. _! V0 Q1 R/ m
    3 i5 T8 q! x  I
    Union(a,b,c);
    1 M7 c4 p: E  j  \  a: rprintf("last得到集合C是\n");! K" v7 a+ a+ j9 b$ K
    puts(c);
    8 u; P: C5 j; \6 {* r) Ureturn 0;
    ; m( E: \' [) Q. U! [) i& S6 n}0 s) y$ i8 r3 k0 Z& t
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    9 a; y: D( m9 y# q7 g7 P' S$ r#include<stdio.h>! l  p; Y9 {' Y# f2 z- J
    ) b9 Q8 S% x0 N) V8 y, a
      struct node$ f9 E2 S8 I( z  ^5 G, X; ~& z0 I/ z( L
    {
    * s+ D0 P* R( N0 f0 h% i) A# T        int data;
    0 T+ L+ d, U9 R- k$ Z        struct node *next;
    ( m5 j, t& Q2 a};9 H7 l0 E, X. c$ X
    //typedef struct node NODETYPE;& l* u2 J6 F' @5 Q
    void main()9 J% ~0 A# v# B' ?+ b9 z! s
    {8 i. Z4 w# H5 v8 v
            //NODETYPE4 V1 k% }  ]3 |5 W" X" G; F
            node a,b,c,*h,*p;" p: D, g  ^7 U) M4 X; Z8 U; q8 D
            a.data=10;b.data=20;c.data=30;% Z" }2 l: u0 e
            h=&a;5 d7 y% k# V1 F+ \1 U6 e, o8 U
            a.next=&b;b.next=&c;c.next='\0';0 p  ?2 Y  [  K) ?/ Z( h0 s& `
            p=h;& r) r5 e! d6 c" w% z) G
            while(p)
    : j8 _+ Q  z- _* o/ K: q        {
    & Z: Y2 M) u2 m+ ?                printf("%d  ",p->data);! H. a! U5 T4 L
                    p=p->next;: M, {- ?. o- l8 p$ ^5 K4 U2 B0 U9 ?4 E
            }
    4 g$ O7 c* [& u( B        printf("\n");
    ' ?( A( }+ s  J! Q" X}
    2 _3 g" b, y5 c' R" C1 j/ Q0 Y; y9 e! X/ r) [$ U4 U- _/ m) H
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    ! d; z$ l5 O$ q0 O3 E& d#include<stdio.h>  `5 Q  T% f; D- e2 c  ^4 Q
    #include<stdlib.h>+ R3 i) I; m4 b# t& E
    struct slist: {, e' @) e7 h% B( E
    {; v9 V8 x$ B- Z' L2 ?5 |7 d
            int data;
    : _  X; b. j8 C/ ~- }        struct slist *next;3 F5 b3 a: @! P, c
    };
    7 s7 H& f% o/ L  x$ m6 |typedef struct slist SLIST;
    4 V! d, t1 R' R" n7 B, I- ASLIST *creat_slist1()
    4 W8 ]% x% ]# w( J; P{
    0 X' g' \2 ~4 g" }' I9 i        int c;
    , A; S2 k& m; z        SLIST *h,*s,*r;8 s# u2 k7 p) H. }, A7 ?
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    3 P/ ~# c9 q4 u& ^" G3 T) ^        r=h;
    / T9 Y& J/ I' p6 D  |/ ?        scanf("%d",&c);
    ) o0 Y# d( j) e: G5 P( ~0 \        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    " k. D) s0 g) X1 L! J  z# w        {
    ' d( U/ h2 `8 I2 [. G' \" Q' ]                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    ( |- b1 U2 I) k7 j6 y# Z4 e                s->data=c;6 R6 ]" O5 g  x3 w6 ^6 x/ \7 h
                    r->next=s;7 `" g; C6 w/ R& x
                    r=s;
    ; Q- u2 S( i# `2 A                scanf("%d",&c);( e) A1 V5 a$ o* L/ o( B) Q
             
    $ Y8 b: V. H: G/ e* v' k        }, l) l1 z6 a$ ?3 G1 f# h9 _
            r->next ='\0';1 g9 r" K% i7 u
            return h;
    3 X$ k1 t6 `- h7 E; g* t) A}
    7 k+ U- ]! h# P6 S4 ?0 m; K( B# B( q4 y' L& `9 V( N
    /*
    0 a% a2 ?4 r$ k& T  x1 l" ]$ Fprintf_list(&head)
    8 W# Y" N9 Q; C{        SLIST *h,*s,*r;6 [  h$ W2 B1 A4 y7 p
            int c;2 E8 Y: B1 t! u  S9 D( R
            h=(SLIST *)malloc (sizeof(SLIST) );
    7 j  d7 f2 }% V        r=h;! z. P. n/ ]6 o1 E0 ^$ m; C8 `& }( q& ^* ~
            s->data=c;, f- y' Y$ D" s" A5 |
            //scanf("%d",&c);
    - s7 G  s3 U1 i, F0 m        while (c!=-1)0 a& A/ j$ V* @' ?7 v
            {; D3 i4 [$ O$ _, |+ N1 U
                    printf("%d",c);( b" ]$ U( t. N. \
                    s=(SLIST *)malloc(sizeof(SLIST) );- q5 R3 r' e; `
                    s->data=c;7 ?$ X% M6 m" A3 W* e
                    r->next=s;
    # b/ F- N$ [: q# F& E7 j                r=s;9 w! c( o# Q# q- l) c
                    0 ^& N+ B. f3 w8 M# \7 h2 b* w
             
    1 w' F! ~( W* b# ]0 A        }4 j, _- g  e0 L" \) p6 i
            r->next ='\0';
    4 A* g3 ~1 ]% ]% `4 P# _        return h;5 i$ w9 Y0 v9 X6 [: b
    }9 |1 i( Z. a8 X8 g0 J; v
    */; ~& `! o& W+ Y1 ]* ~; y+ K
    void main()7 B/ [! d* `/ d
    { SLIST *head;
    ) a3 R0 I4 J0 J% N2 _  x1 s8 }% `8 n9 a" }8 U7 S' t
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    1 \  R& t  B9 o  N6 ^printf_list(head)
    ' U4 O1 g" i/ \# b}/ j0 l4 `; h/ c) N
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。1 E4 G; y9 Q# R& ]3 U% B$ i

    1 l, d; \7 V. B/ @#include<stdio.h>
    4 o( U" Y0 Q, O& W$ U$ o4 { #include<stdlib.h>( o) F9 o! Y! R, h( k
    1 n+ C" H& A3 Y5 y7 C7 i! X
    struct slist$ V" X: ]  H& }" B
      {
    0 ?9 z; A2 J1 v+ a  int data;: _7 q& b3 D! O; m" |
      struct slist *next;
    ) V) G, O( z4 E2 t2 r0 A6 q, @  };
    & K. U8 ]  E5 C, ~4 q! S! u) f  typedef struct slist SLIST;
    3 ?  ~& A( z- D: g7 G& i, B7 s " a; {1 i2 Q2 r
    SLIST *creat_slist1()2 i1 W- ?- v2 j$ A6 J) \% i
      {! e* i+ Y4 I1 A
      int c;7 q) V* }+ e2 T3 v& a- K* K
      SLIST *h,*s,*r;; X7 U. q& }0 z9 i
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    $ ~! Z/ b) z# a: Jr=h;1 |! r3 R" X" R$ S
      scanf("%d",&c);! k' {$ {. \4 g
      while (c!=-1) //当输入的c为-1时,代表输入结束3 d" X+ u5 h! l3 U7 C6 I$ B
    {+ B8 F/ y: A6 }% w$ c: D. E2 ~
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点5 {, ]' @" N/ v  a
    s->data=c;. N8 c! d6 W( Q, `3 @3 A
      r->next=s;* c5 r. ]- r) Y& ]6 N
      r=s;
    3 c4 Y$ x' Z) D- s  scanf("%d",&c);& r8 e2 u8 a, ~: y+ ]4 @
    % g8 I- k( a! v
    }3 Z& V! I5 l1 |' o- l& h
      r->next ='\0';- C2 G: ~* ~" c- S+ q- W. H* O
      return h;
    3 F1 D+ w- b! T3 o/ E  }
    8 k( }" J7 w9 ^ & K& K/ Y7 e1 u3 n: f/ z- T& n; g
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    : i; h5 I. g6 rint printf_list(SLIST *h)# t3 i" h- H( W4 Y+ ~1 N' m+ o2 N( {, \
      {; o' A/ E8 o( h4 O( e+ _
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚  g& C6 o- Y5 l0 N+ t3 ?1 s6 O
    while (h->next!=0 )1 f: m4 ]* ?6 C; U
      {
    , I, p9 s* ]- D% @7 w( G. c9 {  printf("%d\n",h->next->data );
    ! F. E# K- a; W7 O! T  h=h->next ;) a5 C) s" w$ x# r
      }
    1 M/ A* N' e" D  return 1;
    3 D" c. Y6 ~! x/ w' j  }
    ; l% \6 T7 x9 ^  /**/" V+ E' g2 Q6 x1 B8 k' h" [
    void main()
    1 l' O7 [% g  Q1 j1 @4 G  { SLIST *head;
    + e/ X" E8 K0 @- K+ Y 7 ^! ^( W% r' W$ a; f
    head=creat_slist1(); //调用链表建立函数,得到头结点地址. S" d7 g' h; ^- R4 D! n
    printf_list(head);+ G' _3 ]% Z/ ^3 z# R5 L+ b+ u; y# w
      }7 n  p* x; u9 _2 U! j7 |, H% P

    5 l2 T2 X+ Q/ M1 ~( Y8 }4 n+ v) f
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 12:37 , Processed in 0.451715 second(s), 81 queries .

    回顶部