QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2358|回复: 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 编辑   R% k0 t+ B8 t- r7 i
    " j" H: y' G2 a+ R  g
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    / x/ _0 M, g; i+ x2 b+ Y4 k刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。" f* e! l# s8 Q9 e$ }8 ]: d) `
    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集合。
    ! m& n# |. x( Z3 R1 P这个代码是用数组的、算是比较简单的。
    0 X* d  i( i. n9 O/ [, x2 ?5 ?( q9 d: I' M
    #include<stdio.h>
    7 T1 Q# S: \2 r: k5 t4 \int L_length(char []);
    7 P. A& W* _6 fint main(){
    ' K5 P; @. ]. C1 R2 x        void Union(char [],char [],char []);* h& K. }( W/ M% f- h

    / @9 y8 d4 e" y: F4 f% {        char a[10];! S) u& ]. o. S/ J: w
            char b[10];0 f5 @4 z4 @; K" w1 v: W+ k
            char c[20];
    4 F6 ?& w4 j$ f3 ^0 A9 K        gets(a);1 ^6 B1 ]) s5 U6 Y( a4 [$ S
            printf("输入的集合A是\n");
    % A3 P% F4 Z6 K( _* S        puts(a);& {" Z1 W7 @5 _: k
    9 \2 K# K, D, }# |0 ^
            gets(b);! ~3 `# o! s+ v4 z* z: o% a
            printf("输入的集合B是\n");
    " z/ k- @  ~( [; d  S6 s# \        puts(b);: ]0 z* e! ^  g  u7 W1 O; I

      D/ f+ W' \8 _! s2 A1 q" p9 I        Union( a, b, c);
    9 {, V! s+ A8 w- n8 n2 x# R        printf("last得到集合C是\n");0 d4 q3 x* B9 F) [6 S
            puts(c);1 _/ I: |* f2 o& L& _* }
            return 0;
    4 a6 n, ^; i4 l* r# I( U}0 }7 x1 R3 ]5 \, A, e/ W/ H
    1 a* n1 S! Q& M
    void Union(char a[],char b[],char c[])3 k2 B* f0 c, ~7 d' q( v3 v& G
    {
    9 t3 A* o0 Y, o4 Y        int flag=1,t=0,i,j,m,n;
    * m+ x4 J2 v& j# {; m+ e1 d        m=L_length(b);
    * D: l! ]% `+ [1 H# \5 r        n=L_length(a);
    2 F9 x  ]6 W+ {, d        for(j=0;j<n;j++)
    % L, F. i1 n/ Y        c[j]=a[j];
    . U9 a5 Q) S! g4 }! F        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;2 s' G! I+ M1 N, o0 w( r" N) _) T
                    {for(j=0;j<n;j++)
    & N. f( H* X- j% t! j                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    1 T4 _5 P+ O9 e+ \# q! M                        if(flag) {  c[n+t]=b[i];t++        ;}8 F2 g, V; h  {6 W6 r5 X
                    }
    2 y0 a! S1 `* ~        c[n+t]='\0';/ d$ W2 e% o# L
    % _% W' N1 r1 R' Z: V% K2 I8 P& g# m
    }/ L  s. G) Q+ j2 z+ u/ I
    ) x* h8 f: Y$ K' M9 W9 p
    int L_length(char a[])
    : n: ~7 Z* i7 z4 H4 l{
    " |+ \, [; X: B/ C: l        int i,t=0;;
    5 f* J7 ?" h$ y* H  `% k* }        for(i=0; a[i]!='\0';i++  )) r9 h# M8 o* ?+ N/ Q
                            t++;
    . i0 d1 V  _+ ]9 P: Z' H        return t;
    : b2 W% u1 U1 _6 R$ B& ]- s" H) I} " [+ g. H* x# u" T: d5 y

    ) s7 Y. s. [2 x" 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 编辑 / y5 G, G4 ^' ]7 O4 f9 Z

    / i6 W; [. k' }+ P# J* k* z3 ?li2.1yong用指针:2 {4 b( g3 U5 y

    - x: _/ i7 x5 d, A- p9 b+ q#include "stdio.h"1 D  b- K2 W& ?* P8 o0 [) }5 J! R+ [
    #include "string.h"
    6 Y, l1 W' C2 X4 L' L3 Q4 jvoid Union(char *a,char *b,char *c)
    ( y& r: c1 J, k& ]1 H{  Y: v' ^( l. i4 _
    char *p=a;% k4 B& W( z+ j! l' R
    char *q=b;' n2 b& T" M2 l$ I* Y# M- c5 v
    char *r=c;2 s- z9 F( Q7 n3 L: Q# l. W( H
    while(*p) *r++=*p++;% v! L+ }; o7 G
    p=a;3 c0 P; o$ @3 G% H1 n
    for(  ;*q!=0 ; q++,p=a  )
    * c( O! K  D; G  Y- l6 I9 @% }{while(*p)
    5 x( V- `" Q8 @5 F; |4 Y2 ^if(*q==*p){q++;p=a;}
    , Y( Q$ |. m" c  lelse p++;" B: |$ o. t# I2 ~3 l' Q+ e
    *r=*q;
    # v; Z7 a8 V% z: q. Q! j9 q5 Cr++;
    % n7 H, l' K; c' P* p}
    / A' @! W$ [. C6 ?4 B+ k# z*r=0;4 y; ^  D& D6 d$ w+ B# [

    8 v6 i' }% N; S4 ~3 u- a9 N1 B}
    9 T) P  q5 K8 B; s. b) m- T% S& m. E) o
    int main(){& Z, r2 p8 G5 W! A+ L

    4 m* r( z- L* H  ]char a[10];3 Q" Y7 _5 |) t/ b8 T
    char b[10];
    $ s& I$ B6 j3 Y# c8 z' nchar c[20];) s; H; e  z( ]& ^$ S7 U
    gets(a);  e8 M$ [* e9 S- V: {
    printf("输入的集合A是\n");2 I3 U1 N4 k3 g# n# J- S$ H
    puts(a);
    ) D6 c- ~. Q# J! o
    ; Q! g; R9 v! e1 dgets(b);. T: W7 z0 i( E7 k' S: J
    printf("输入的集合B是\n");) G( y3 S% v) `" K5 d9 n! K
    puts(b);
    : r& f/ h* e' _, b
    4 f0 l# D9 n# Y/ z7 f% uUnion(a,b,c);5 Z% e( J5 S: M& }3 w
    printf("last得到集合C是\n");. l. I' P' i/ }+ k; H" J" s
    puts(c);8 P& E3 k3 K& ]/ S2 F
    return 0;7 J- l1 I' K, N% @% z% v+ M
    }
    ; k+ Q, }8 u. r4 X6 [6 c
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:  v6 N4 k* F9 \6 B; f. P/ R1 ~
    #include<stdio.h>
    + S' L6 O: @; B' X0 ]% r
    ; p$ i' |$ S# ^9 ^# H  struct node
      p8 p5 e" n) ?/ J- C. S9 i1 _{
    # T! V5 c+ w( X        int data;2 @2 t) h& y$ I6 ]$ x1 _/ U( ~
            struct node *next;
    1 w' L# _0 i  x& h2 n8 [2 p; `};
    8 Q( [7 y; _& Y7 ^3 P0 C( Z- E//typedef struct node NODETYPE;1 Q0 O1 G9 G. ?5 e
    void main()" l2 {# m- X. h! a9 r2 |& T% L& V; D
    {
    0 A$ v- z; I' o& E. j4 O3 u, c        //NODETYPE
    8 U! m9 D$ Y) M7 X, l/ ^; D        node a,b,c,*h,*p;
    ( g" j# J# M( E, c/ ~        a.data=10;b.data=20;c.data=30;
    8 j2 z9 g6 m; d4 P& l% ~$ g        h=&a;
    3 }$ I( n$ `5 h        a.next=&b;b.next=&c;c.next='\0';3 ~4 I$ z; Q; {" E/ @; U0 c" d
            p=h;
    " r. A6 Y- B3 r/ g8 t* D8 P        while(p)
    ) E+ A& B0 p% a9 [$ X2 z        {1 v3 G' W/ g  U( f
                    printf("%d  ",p->data);* B# k9 _! S! x: D
                    p=p->next;
    ! P5 P* P. l  A+ a" h        }
    / i) j( E5 ]8 O2 ?& {        printf("\n");: P; q3 N9 |8 {' W
    }
    , g/ i4 C( `; ], [. X8 r
    ' ?# S' u5 [1 |这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    " Q. ]6 K6 V  z$ a2 f#include<stdio.h>1 {: f$ G& u* x) ?
    #include<stdlib.h>
      L/ ~( Z. j) ?* m& s, b& wstruct slist
    : H6 A8 I6 A5 M{( \* M* w+ H( I
            int data;
    9 A, `; @! a& n  o3 b        struct slist *next;* y5 [# k+ N6 m, C' u
    }; ; ]: \: A0 i, V- p
    typedef struct slist SLIST;
    . r) e1 m  @4 T" rSLIST *creat_slist1()! A8 M( ]6 L/ O7 A8 i) p: i/ _
    {) X, D  O+ ~* i, p/ J
            int c;6 J) B$ m( \: V8 c9 o
            SLIST *h,*s,*r;
    . A: ^1 D$ K/ P6 G+ E        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    $ Z* ]; l, o4 t( V. F        r=h;  u0 p8 [3 E9 l7 h+ A
            scanf("%d",&c);
    " C8 G3 e# c# u  A! [        while (c!=-1)                                        //当输入的c为-1时,代表输入结束/ D+ F/ S4 E3 j( R; Z* C/ T
            {' X) c2 Q; d$ c! z' I
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点' X6 Z/ I% o, [: n/ b3 ~. R) l
                    s->data=c;
    ) n; Z* _9 ~  I3 ]3 F                r->next=s;
    8 k, E. n7 n& C2 E1 `$ _                r=s;* J: R) ~0 x' r9 ]" F
                    scanf("%d",&c);
    4 h7 J3 R. V5 F0 ~9 Z0 d, s7 |; i$ a: _         
    ! X2 ~/ t+ g( N, `3 ]! S% ^        }
    2 J7 P+ f2 G* z5 q        r->next ='\0';5 Z- v+ |; g7 C
            return h;
    ! z' W- b! M( ]1 t3 T}+ T; @& r) a$ B* c) V
    4 Z7 Q. Q4 S" v* b
    /*9 O. O- B% H0 s( q/ X1 g2 f1 a7 O. \
    printf_list(&head)
    ! `& x7 x* y8 u3 m, b# B{        SLIST *h,*s,*r;/ T3 ^% \7 O, X2 ]% x( W
            int c;
    / P8 z: G4 A$ M* V7 C        h=(SLIST *)malloc (sizeof(SLIST) );
    % S/ \$ v9 x. ]: B, K  W! v        r=h;
    3 g+ w' h0 f* {' o        s->data=c;
    & Y8 L; ~7 `, j& z. T        //scanf("%d",&c);7 ^' \" I1 V- ?9 M0 @+ s! W# `
            while (c!=-1)( g8 `* H1 ?7 @, _! u
            {
    ) `0 b( X2 W( h0 z6 f8 P                printf("%d",c);5 V( s" |1 O0 ]( C/ R# x
                    s=(SLIST *)malloc(sizeof(SLIST) );% H6 U! X) C* p
                    s->data=c;& {% b, k9 r/ W) f' y
                    r->next=s;" L; ~& l! G2 e' E  R
                    r=s;9 n8 v' U* c" r1 a. D& C) S
                    1 i+ X& Q& n" B9 _1 V4 ^+ @* y
             
    - ]% k, p+ c# s4 \. b1 I, L        }& L' `4 j8 T: k) U
            r->next ='\0';
    / }5 K" U$ m9 |: a0 v        return h;
    0 v* E+ Q" C. c# ]: a}
    & w& Q: i" q5 f9 u0 z0 f*/
    ( _6 z  O9 O7 @( Rvoid main()
    ' {( g4 Q9 u8 p8 ], B$ {{ SLIST *head;7 c& F* T# P+ m  h# K; s
    9 R# ^! ]0 [- z' ~
    head=creat_slist1();                //调用链表建立函数,得到头结点地址& B. j8 B$ ~% X
    printf_list(head)$ o7 f# M" D5 D+ N8 t8 U- e* A* z
    }
    8 n- J* _7 u; x3 t$ X. S
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    / R+ M1 C: \* U
    % U; {6 b& N+ [7 l: g#include<stdio.h>- J  K" y. W' M# p4 @" X- @
    #include<stdlib.h>% s& e. U# m7 x
    6 ^) ?0 Z- M" x3 |# M
    struct slist) y! J( D9 M0 T. J
      {
    ; p3 M" g  I( V1 s: j4 f) i' e  int data;
    2 x( y% z) w1 _: O  struct slist *next;
    . j$ A2 B/ i" I% {9 ]- U! X  };
    9 t9 K: _2 Q: s3 I- z  typedef struct slist SLIST;
    + t7 R6 A6 I0 Y( n9 H2 y" c- }4 Z / _9 a) E5 E# N/ y# r0 v" G$ J9 O0 j
    SLIST *creat_slist1()
    7 F8 g3 R1 p+ l! J% c; I  {
    $ U2 L5 c: ~; V' v6 f  int c;* b& \$ d  F3 O6 r3 b+ b: h% G4 l
      SLIST *h,*s,*r;
    4 \& V, P& q1 b8 s8 b; H' z3 b  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    ! Z& s4 N1 K/ j" N% H* B# er=h;" n+ g$ t3 s, G5 S
      scanf("%d",&c);2 [& f. X# i* A/ p& q1 v
      while (c!=-1) //当输入的c为-1时,代表输入结束4 Y. t' T) R! N! g) C
    {
    + @' ]* e% \6 j7 |! ^s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
      j0 Z8 D; I* v: L+ T: t' B/ Ss->data=c;/ ~, N  n' `6 t, x+ U
      r->next=s;
    9 U5 ?6 N7 F  ?# ?9 ~" E3 Y  r=s;0 H$ ^6 f) }' I7 Z- }
      scanf("%d",&c);8 X  G/ H1 @# T8 j0 m. w

    2 i- P" o( v7 {' M+ d' f}0 U9 F3 t7 f* _7 v' f% z
      r->next ='\0';
    2 \3 @' ^, G5 M  return h;
    - l- j& f; I2 \. H  }0 t" O. Y) e; X+ e; ?7 T- \$ K) O
    + ^1 Q; l: c+ B  @' C
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    " a1 n7 R0 T: _- @, qint printf_list(SLIST *h)
    % l( B' X; R5 K, e5 e  {. z" O/ U6 |0 f( k' Q4 O# N
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    : Z' b* X6 M! \) j* R, w0 r while (h->next!=0 )
    : Y6 M4 n9 a$ [! c0 E" e* Z  {
    ( H2 P  H! m4 d5 `  printf("%d\n",h->next->data );& q! b1 U/ G. A* F" |
      h=h->next ;5 O* t( `$ h& k: ^( `) H. F, c" V
      }0 R, P& B7 n, m) m/ v
      return 1;
    # o/ Z2 {. z% W  }. g' m3 b2 b6 c5 l
      /**/: D* i, \) X: G( x( P' f6 ?' V8 S
    void main()% y. `& \, L: a0 i) t( e0 W
      { SLIST *head;
    2 Y* C1 f0 E0 V ; \. j; u" M1 n
    head=creat_slist1(); //调用链表建立函数,得到头结点地址  h% P( f2 X' z: q
    printf_list(head);
    ! T+ ^: u! k; |7 J  }' |; D$ s% i6 r0 K
    , ?" z. A: [: |( t
    9 q/ s) i8 {# ^
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 11:24 , Processed in 0.815867 second(s), 90 queries .

    回顶部