QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2363|回复: 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 编辑
    0 A# y4 k7 {" `
    8 R6 B; n+ M$ O1 P  D8 k计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。2 _  y3 |: g1 A4 u3 R
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。1 I9 d# f8 j, F; I; 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集合。3 a- i# {! N' x' i
    这个代码是用数组的、算是比较简单的。% p+ l8 X* V0 ~( C6 K
    ( N4 i( `3 J3 Z9 D2 h3 Z. |, A
    #include<stdio.h>
    ; j7 a* {* ?. U" @4 l' hint L_length(char []);
    4 \- P5 P7 X* wint main(){( X; Z% G2 P: J1 v
            void Union(char [],char [],char []);
    , c6 L6 Q! Y7 u- b  i% U0 I3 h% J2 e: z. w- D' y3 {
            char a[10];
    5 C1 o3 t9 D8 B        char b[10];1 j  r9 z* f& }# ]/ \
            char c[20];) @" v! W% H8 g% ]
            gets(a);
    : I: }* _1 W6 \1 T- U        printf("输入的集合A是\n");( i) c8 i9 F& V6 f
            puts(a);
    ; d2 x! i( N- ?
    % s5 Y5 O/ n( C3 d" c        gets(b);0 r8 {: W0 t; Y- \+ v* d. m
            printf("输入的集合B是\n");
    ; `, s8 W3 Y6 i# b4 K        puts(b);% Y3 g1 S. T6 n  o. }. O: l

    5 {% C0 ?  r7 N( ]* H, w" H, {        Union( a, b, c);
    " v* f3 H/ G7 h! {( O        printf("last得到集合C是\n");
    3 W- x( Z7 F+ o2 ?        puts(c);
    4 J3 V: d5 {. i0 b' l" I7 G' n        return 0;8 U4 x) Y/ d' o
    }% D! F' Z2 r. ]6 D* s: C

    4 {* {) K  n) \4 z4 V2 G$ jvoid Union(char a[],char b[],char c[])
    / C9 D' b' p! n: Z; G3 d{
    0 y6 w" S* m/ @7 z        int flag=1,t=0,i,j,m,n;
    & O& ~6 L  ~8 V! |* c  B/ W; b% J        m=L_length(b);
    * o7 d- F1 \& A1 X- D        n=L_length(a);
      R5 T% b% L% c# `( ]5 j        for(j=0;j<n;j++)6 N' E7 ~% P  ~1 l( o
            c[j]=a[j];. ~3 p3 [: Q9 [3 }' A
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    + z3 a( B" V7 R$ u: \% V' i                {for(j=0;j<n;j++)
    8 m' V/ b  k9 v( }- _) e                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    6 K8 n; u+ m4 {- M                        if(flag) {  c[n+t]=b[i];t++        ;}/ ?; V0 v; ^; ^9 m, y8 m& H
                    }
    ) o/ Z' l4 F4 O0 H# J+ D        c[n+t]='\0';
    , s  a5 B  {; Z; Z0 L   A! N/ u% M. t+ _% q5 W
    }
    2 x- ~; q1 B9 P+ B- C- O$ A9 A! d: G" Y: j# p
    int L_length(char a[])
    % A7 `( v4 W* r& p" |5 T6 p{9 I# i* G9 \9 P4 q/ E9 @7 l" v
            int i,t=0;;
    # r1 x# p5 _1 x+ n& t7 }# ^        for(i=0; a[i]!='\0';i++  ). Z- d5 V7 A6 u8 z! }8 q4 o
                            t++;- V0 E& i9 w0 W" q4 C* T
            return t;
    - P5 i' l% d! s4 V2 d+ H) r& n7 P. P}
      j* b+ q  c8 r$ A/ c* }$ e9 G0 J' ]+ v8 a, c9 f7 u+ V( |
    回复

    使用道具 举报

    慢跑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 编辑 # u$ Z& Y4 q; L* j

    : B  [3 Y. p1 Z! S  gli2.1yong用指针:
    - \7 h- N' _% V. I3 c* X* K
    1 `' N2 K% a1 O; p+ D0 w#include "stdio.h"$ E$ D7 |% j( F9 `8 m* I" [  i
    #include "string.h"
    2 Z! G7 i  ^; K0 S# J; Nvoid Union(char *a,char *b,char *c)
    0 d7 l0 T# Y& w2 x{
    . q! `3 I8 L1 W& X& t& Pchar *p=a;# B3 l0 Y2 ]$ n1 b) |
    char *q=b;
    $ e# d8 H. l2 Q6 t5 J) N- Qchar *r=c;! x1 O3 m* r. M( d- f' f( ]. e' Y
    while(*p) *r++=*p++;5 [0 y' s6 T% T# P
    p=a;
    * l: ?6 g3 K, A; C8 P4 i9 R& \7 [for(  ;*q!=0 ; q++,p=a  )- Y4 q7 m2 J% L, [1 ]9 E" ]6 Y+ g& M
    {while(*p)$ r# Y6 j! Q+ t9 v# B2 z
    if(*q==*p){q++;p=a;}
    4 }% W0 }' D7 t+ Y( welse p++;
    3 x' f: ^. g' B( T*r=*q;$ q$ e6 j7 h' `! F
    r++;. f/ k; \$ r5 g; N; p
    }) m, f0 z, d: j- v& Y
    *r=0;
    : ]7 ~4 v9 f5 P$ v0 b& a# z
    ! u! h0 T, Y# ]}$ z& b  Z1 c" O. M

    ; R  y( Q0 P4 g2 `int main(){, V3 P" B8 R0 r$ C) T

    / h- X8 k6 z' z4 T+ B( M6 e/ mchar a[10];7 l. k8 j5 N- n9 u5 [, M9 r' `. a& D
    char b[10];- i5 W: R" I, b9 }( k
    char c[20];1 S( v* k/ D) C, p+ k9 E# t4 L
    gets(a);
    & z" {: _  ^3 t! H! ~8 {: U6 L$ q7 Tprintf("输入的集合A是\n");. l& G. z8 P5 ^
    puts(a);9 F1 R- M7 _* T( N5 H$ X1 V8 K* ^
    9 |8 u+ y3 E% K# t, z* [7 K# d( G  m
    gets(b);
    0 E3 f* k# v) p1 tprintf("输入的集合B是\n");
    ! _  [$ ~. c( D' `' H" m' i1 Xputs(b);
    * T) d% f: H5 k1 a! P6 K4 T1 v; y7 Z8 ?7 |5 y
    Union(a,b,c);$ T7 g& H& M; ?+ i7 a
    printf("last得到集合C是\n");
    8 n  }- b" R; r& C3 k  A, k' Uputs(c);' h1 a/ J4 r8 }5 x+ S$ x
    return 0;
    ! ]" r2 J" R( {1 K}
    7 }8 r3 O0 I2 `2 @0 R5 G
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:; x3 t& x' }  w  o8 x2 `
    #include<stdio.h>8 Z/ y! e* L  s5 F9 H: T7 }

    8 [. @4 r* a3 q  struct node
    / k. O/ m. i5 G/ s8 {8 z{
    5 m% M1 F1 F1 h4 f$ a* L$ M- ?        int data;
    ; h  W( B$ H, S+ `, F. w& m        struct node *next;
    0 e3 @  |" U- A! z, i, Y};% g1 L, _3 w9 K0 F* ?& V7 s
    //typedef struct node NODETYPE;; o! K% s- e% a1 P
    void main()
    - `; z# A: @" O* u3 O' k{
    3 J+ {5 Y  o) f! O4 ?        //NODETYPE
    , _& v4 [) j9 n; U  H        node a,b,c,*h,*p;2 U5 o$ E* s% F% {1 o! d. k
            a.data=10;b.data=20;c.data=30;5 C2 u! `6 s: ?2 H5 E+ `7 r" t
            h=&a;
    3 N" n. V1 E0 T: k# u# t        a.next=&b;b.next=&c;c.next='\0';/ a+ d. q: j7 r
            p=h;7 `6 T' [0 b& ~' {
            while(p)! T0 P8 A5 n! g/ Q, M- M! y
            {
    9 ?/ s# P7 C0 @' Z4 Y3 c                printf("%d  ",p->data);
    ' M5 T7 x: H. y) s: w. G& Q7 n' u  j                p=p->next;
    $ W# q2 @  N- B        }% r$ C: X# H! ^+ N% o# q9 L* a# `8 z) p
            printf("\n");% u! q% }- ]* j
    }
    * r- C2 l' \8 V
    / s% _: f/ b1 N8 y: k8 N这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:( E' v- W$ W: q2 t6 _2 `
    #include<stdio.h>
    ( a, l" }4 ]; v+ k! j9 L8 N* f#include<stdlib.h>/ M; C: R5 L5 E8 ?
    struct slist
    * F( V6 Y; P+ X" F9 B9 V! H{
    3 M! W; k3 g& h+ v0 q: t' ?, v        int data;$ E8 L0 {; |9 M& h9 F
            struct slist *next;
    3 A' T6 R) g! R  X' E1 }# \, u}; ' l4 s4 N, a+ s& b
    typedef struct slist SLIST;* o6 N3 g2 C& V
    SLIST *creat_slist1()
    ' Y$ I  N3 y( |* |{
    : z4 m; _5 Z, x        int c;
    ; p. B% v6 `# s; A* c3 `+ O  v        SLIST *h,*s,*r;$ c* c( Z! @/ E0 l
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    % B; M% v: O* P, g        r=h;3 Z* _4 i2 m8 i# E  S: T4 s0 ]
            scanf("%d",&c);' i. Q6 K5 J  y$ h; J5 [& A
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    8 o- {+ O# _7 m8 d; u        {7 n! E* i3 F) s. C& O& D* O: E
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    ' V/ p: t8 @: C5 x4 c# I                s->data=c;
    3 |# ?  c0 [; |  f" s$ j! S                r->next=s;" ^$ o7 Z* T# w" k2 q6 N
                    r=s;: G$ ~9 {/ E5 w7 W$ N4 m
                    scanf("%d",&c);# _/ R& }& e3 O
             
    ) ]. a+ V2 f- K3 U' V9 H        }- v) u! ^' Y( u6 u
            r->next ='\0';! N5 i1 k5 I4 v* m( q
            return h;% O5 b9 q! Y+ C( }+ A& V
    }
    , M- i$ @3 T+ J7 G; |- h" I* H) r; h2 j# {7 g+ _* p
    /*8 G8 F1 |" p# s7 ~2 S% I' Q
    printf_list(&head)
    ( q1 I% H) I5 d3 W: g* m0 ^- ~{        SLIST *h,*s,*r;
    3 o, F8 ~! m. E1 u/ s7 e        int c;+ B8 p, c' M3 z7 w) |8 v
            h=(SLIST *)malloc (sizeof(SLIST) );
    4 T0 f  N4 l, ?; ~& r$ j8 [, H' Y        r=h;
    ( b, ]* G; h2 D        s->data=c;
    - v# s# w! L% K# d1 i4 c        //scanf("%d",&c);/ O0 v, v* D2 Q2 ]6 x
            while (c!=-1)
    2 `& t: ~* e4 K8 G! g        {4 p: ~& s2 r. ]* ~* {
                    printf("%d",c);2 M, r$ y& o5 {" q7 C: {
                    s=(SLIST *)malloc(sizeof(SLIST) );
    3 [: c& R6 W+ h7 B. k                s->data=c;# p$ B2 w: I; Z& I3 X8 K& ]) Z
                    r->next=s;
    6 m+ K$ O+ m! d                r=s;  M! k; K/ [2 a3 g
                      t1 O8 u+ Q7 e' U+ y
             
      W; U" `0 A( h( X  F/ y% E; \6 \* W        }1 {+ Q+ h* f: x; n) C
            r->next ='\0';
    ' N$ {5 b; T& i        return h;
    7 J+ R# i# P6 u; w}/ X9 X7 s/ n- ?% m9 a% C
    */6 o9 g) T4 U  Q! A* ?5 W( n/ O' D3 s
    void main()' ?/ I" y2 \& A5 [- `. m' }: C
    { SLIST *head;
    4 G6 ?2 G* K- E# g2 V- p. G! f  ^9 M/ y6 ^
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    2 `. m/ G0 A& `1 }( @( N6 {printf_list(head)
    . k9 t; z2 ~, n/ H}" t  R+ q/ N" B# p
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。6 F) N3 G0 \, v! q3 ^+ Q2 f

    . O% L# `! x6 ?' R) V6 ~; c#include<stdio.h>* F- ^$ e7 b  i) e. a! h
    #include<stdlib.h>
    & J" ]3 ^5 m4 z2 b
    6 E8 L2 A; d" `* A struct slist& m8 H  E1 i! U5 k: {
      {0 Y( [, F# G6 V- I" a; k# T
      int data;
    2 u: v: n. |  t1 g! W% c$ K! Z  struct slist *next;
    5 h$ G+ B1 ]  @' i  };/ `0 W: R8 B$ ?0 \9 q' l6 C
      typedef struct slist SLIST;% {3 P# d4 e; }

    " v! Q8 Q2 m5 s/ M3 C0 o/ I SLIST *creat_slist1()
    ' ~, k' {* y. B# j8 r3 h3 x3 `8 s  {  e7 L6 c4 O4 k3 x
      int c;
    ' j6 E; X9 i0 `9 Y" q; {" _  SLIST *h,*s,*r;% x, Q9 ?1 l2 t
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    / {6 ]8 X- G9 V) [" z6 [; W6 Or=h;  g( B3 S( C0 o/ }7 X
      scanf("%d",&c);
    1 V) ^- v( R* B' N) W+ D) H/ B  while (c!=-1) //当输入的c为-1时,代表输入结束9 t: Q) ]; x9 g) B" D2 r  S3 t
    {) v  [% h& U0 @# e
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点( h: V. [0 N$ Z5 b
    s->data=c;
    . p6 D! D' j0 M  r->next=s;
    ! U; R8 K& g0 ^4 o: y  r=s;
    9 w* o  O# y- f0 b+ ^) U  scanf("%d",&c);
    + x' b: {$ R) V . @; }+ j; q$ c, M$ C: d
    }
    % L, J, p* T. `: b1 v) ^  r->next ='\0';( E& _6 C* [$ y9 c; R' ^' O) E7 N
      return h;
    + v& H. G, [" f% h1 @% W# J  }+ W- {- j- M% g: p/ F; c  K+ N
    ! W; I5 y+ }* c# i6 M" l8 y
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?1 l) {- M1 N; z& l. j
    int printf_list(SLIST *h); ?/ p3 n9 O; f6 j$ L7 M) h2 W, M
      {8 f# p- ~% F6 N9 x
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    5 Y2 g" \8 o/ `$ m while (h->next!=0 ); b0 {8 ^5 w1 Z* N. O. m
      {3 n# f' Q, w$ L# f7 w% [' y
      printf("%d\n",h->next->data );2 Q$ R9 R% r, \6 X- P  M/ y( j
      h=h->next ;
    4 ], J+ r0 L  a8 V( B4 Y8 [! X! ^6 Z  }
    - w7 [, j) d0 [  return 1;
    * C/ ?) ^, ]. ~6 c: Z/ i  }/ E% H/ z, M& n( e" t
      /**/
    ; k( o" ~& b! U8 `5 J) l void main()
    : _, a" K- {$ N- Z1 U+ p2 I9 C  { SLIST *head;
    , U7 u1 Q. A) h3 _3 v# W
    " {9 Z" ?% l+ u+ s% C$ Phead=creat_slist1(); //调用链表建立函数,得到头结点地址9 {( V2 |) I9 l1 I
    printf_list(head);8 P2 K  [8 B' P
      }
    6 n' X; F+ u5 U6 W6 j" S
    % L& [. T" F) r/ Y
    ( |- o) u1 y( x* t, E0 W# K此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 14:36 , Processed in 0.611188 second(s), 83 queries .

    回顶部