QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2360|回复: 6
打印 上一主题 下一主题

数据结构,清华 严蔚敏,例题代码(自己写的,持续更新中)

[复制链接]
字体大小: 正常 放大
慢跑20 实名认证       

60

主题

8

听众

3684

积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    跳转到指定楼层
    #
    发表于 2014-3-10 21:34 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    本帖最后由 慢跑20 于 2014-3-10 21:38 编辑
    5 {0 s6 [2 Y) F8 n5 n0 W7 m" t/ T5 E% U! l- I
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    0 m6 B: Y4 Y$ {; ]! z/ Y刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。: g: l* X+ V, 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题讨论群组

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    8 O& V& X9 v- E! d; ^3 X& C6 ?9 n% Z- }6 t) Q# u& m
    #include<stdio.h>" b) n7 k3 s: W" C( H
    #include<stdlib.h>" U6 ^! M  }5 t6 S5 I6 b. a& I* C
    * z6 \4 I9 u+ A7 i- t
    struct slist$ E3 ], m! m1 z; U: B$ ~
      {9 |3 e8 {" v/ _$ K2 t4 {
      int data;
    2 V$ m3 [2 Z+ F, V' n  struct slist *next;
    7 t+ ~) k" m! R4 F- [  };- m( `7 n3 C; c5 a2 t6 {" r
      typedef struct slist SLIST;% w# x' I; I  {2 z8 O
    ) p% U0 U1 X( P
    SLIST *creat_slist1()5 M0 G- `& Z# m" W4 P
      {6 _0 }* p8 @) K* w2 W1 j$ \7 A; \
      int c;8 H% u  @( |# C8 m6 [: `
      SLIST *h,*s,*r;3 M  T6 e4 h: X. V1 t% a+ e
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    & ?; c3 x9 ~5 z  E. e: G0 _5 Ir=h;
    7 _  f' {/ h3 |# e, B' K0 h  scanf("%d",&c);
    % V" t) D" G5 _: f  while (c!=-1) //当输入的c为-1时,代表输入结束
    2 I, L; j% W2 u{& k; ~6 J+ ^& O$ ?* }
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点% m8 D$ U' e( f9 |% G1 B, P
    s->data=c;
    9 i+ E( Z4 Z  S7 D+ N/ {1 `  r->next=s;
    3 X/ V1 \) R; h. @4 ^  r=s;  U; e, e. `4 t
      scanf("%d",&c);4 U1 M! U$ M$ ~$ `, g' R" U' U
    . j8 p8 `4 y+ y) T0 [
    }
    7 K0 @3 U& p: U+ ~6 [1 ^  r->next ='\0';5 Z0 z$ S0 _5 @0 X
      return h;
    0 p0 x6 D4 [8 d, s  }
    / }- t6 D6 H; r; P * z  Y. \' @6 J+ }+ [0 z
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?; N) C5 t1 S" x! ?
    int printf_list(SLIST *h)
    3 n) X9 ^% K$ c4 K6 g  {: ?, r6 F0 P1 S, V4 t/ S1 t, I0 Z8 T
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚! s5 [% D" i2 L# `. d9 B
    while (h->next!=0 )" D2 v  n" x/ `+ i- l0 ^+ i$ _
      {0 ^9 M4 L9 |) g% h
      printf("%d\n",h->next->data );
    2 v: y$ M0 T) _* p  h=h->next ;6 x4 V4 P3 ?' Y, J, R& C
      }
    ! @; H' M/ I; Y" M  w5 j$ x  return 1;) d8 ^& d* Q* d5 f* I  S) t& {
      }; ~$ i* i. z1 z2 L$ }
      /**/
    * k/ v! K6 Y. p1 j6 j- n3 ?1 G! m$ Q void main()
    - Z/ B$ F# }+ }  { SLIST *head;" E% b( d2 c3 Y: Y7 P% \
    9 F3 y9 Z% \, j
    head=creat_slist1(); //调用链表建立函数,得到头结点地址3 T( a: k6 ^& y! E( P
    printf_list(head);
    3 I1 |  Z6 U$ S: u, r4 D4 ?  }) a5 \$ ?9 ^, o" |# w

    , E7 w1 h9 F* A& _" ]
    ! w  X/ G( ~# Z. u% m) h此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    $ q. A9 J. t6 f% A/ O#include<stdio.h>2 @! N% m9 V. Y: u
    #include<stdlib.h>3 \, g% V' V* d: ^) C6 ?! Z
    struct slist
    ' }6 u' w. Y+ f) Z$ W- o" ]& o" i{
    , C  \( l* `+ u/ ?) w3 i$ }; \        int data;6 g  E. p" V5 a* t9 x2 l* s9 Y& v) _9 v
            struct slist *next;
    0 E1 \  C, A4 t; {}; % I, x7 s' F0 _7 U' Y5 n" N
    typedef struct slist SLIST;  J0 S& Z6 r* F, B
    SLIST *creat_slist1(); y/ B: x! g0 w& I
    {
    ) ^* M  k2 c# z! A" X1 i* z        int c;
    7 c. @* z* X  J6 H3 j. s        SLIST *h,*s,*r;7 U; f( e- n9 T/ i
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点! i/ U6 N0 j: T) K3 [
            r=h;
    4 C: G8 q+ E5 l: y" n( b        scanf("%d",&c);* J2 `4 i; K) T1 L  o
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    ! s7 X$ ^8 s: ^& r3 @- |        {0 x; |. Y+ l0 P0 m, x8 H' g
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点4 R7 }9 }4 w8 H8 e" ]9 c, B
                    s->data=c;
      v7 @0 @2 i0 W% T; p; B                r->next=s;
    % z1 [# T+ ?7 `9 E0 i                r=s;
    , {# ~2 X1 m( j( q4 e) G5 C                scanf("%d",&c);0 m6 l6 z2 j% r" \2 `
             - m  T  P5 v' L" I# g
            }! w/ p8 Q9 w5 R& e  g% G, a6 Z! w
            r->next ='\0';
    7 B  ~7 d: ^" n# g+ v        return h;
    ; ?* L& r1 ]) }& y$ T}
    & x6 x' R4 U; o; J
    0 `* a3 x1 z9 l/*. C1 F8 O( W  q" W/ |
    printf_list(&head)
      t( r9 L5 @7 w, j5 J* j{        SLIST *h,*s,*r;
    2 U4 ~4 V( H  u3 u- q- s) N7 `9 T+ H        int c;
    , Z7 \- y9 M1 E3 U7 u        h=(SLIST *)malloc (sizeof(SLIST) );9 @& a( K& h8 U* c* T
            r=h;
    9 W( r% ^7 |9 H( r# T        s->data=c;5 f( K; s4 L8 n' Q
            //scanf("%d",&c);  V8 I; ~. s+ \) W3 H2 J
            while (c!=-1)- A; P2 }: n: N, |6 H
            {4 p  J  z% m+ w! w+ d( u
                    printf("%d",c);
    " B0 o# @1 O1 e6 A# i! f! |                s=(SLIST *)malloc(sizeof(SLIST) );5 y  o/ p' F( U/ J
                    s->data=c;  t  N8 ?, i1 c! E/ D
                    r->next=s;
    $ M4 j$ ?5 Q) a+ e/ Z6 z+ l8 d+ k                r=s;
    . d7 W- d9 P& z6 j9 O) B               
    + c1 S+ H! Y0 g2 e) Q8 P         
    / o/ D1 T4 j; L        }* f# M; s2 H( o- x8 G" |! m5 `
            r->next ='\0';
    + @" b0 u3 Z; F) Y        return h;
    3 p8 o7 \9 V: f% I}" i& W* {3 f6 B: B
    */
    ! l) g$ M" C' U+ Q1 Wvoid main()
    + c; b; q) l* _: _) i{ SLIST *head;
    9 o8 \4 ^+ m4 f3 O, g  O  k; d# e, P
    * \! y1 z& m6 J6 X+ E' @head=creat_slist1();                //调用链表建立函数,得到头结点地址
    : N$ m6 ?! y8 G( o9 L5 ]printf_list(head)
    3 R9 \$ n! I4 p}9 c: D5 Q3 F* {) O
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    ! o. y+ i* A# m( K( M% G#include<stdio.h>
    7 x  `4 }4 a: `+ I# l4 j+ A2 u4 m8 C( _
      struct node
    ; V- W+ o  ^0 {5 I{
    : s2 x" _4 C% L2 u0 ?        int data;
    & u+ c. O! B. @5 L        struct node *next;
    % R& b; _) t1 X  k8 e};
    . o6 C5 I, O) H, |8 E9 P//typedef struct node NODETYPE;
    ( R6 G- A0 N6 @void main()" y" n, e; R8 G, O" `6 o8 I
    {
    5 m% g6 y, J- l7 \+ e& P        //NODETYPE7 p3 Q, C% L+ [/ h1 `- v: C/ b$ ?
            node a,b,c,*h,*p;
    $ z5 x9 s# f- i/ P/ y        a.data=10;b.data=20;c.data=30;8 z4 M6 c0 F4 Q# L0 l$ I& y+ h9 S0 \
            h=&a;7 P  k8 U1 _5 G, w; L4 c0 ^
            a.next=&b;b.next=&c;c.next='\0';
    . J9 U/ h7 x( N( Q* f7 J        p=h;
    - J, `; f! H# [5 a/ {' q/ {" n        while(p)9 L4 z  s: C2 K( d
            {
    ) h0 K; A  |/ L* }                printf("%d  ",p->data);
    7 j, G, d4 j* ~2 O                p=p->next;1 e7 l! L2 o1 O3 E/ J; u, \9 a
            }
    % W! e0 L$ J  N1 _        printf("\n");
    , y3 p/ {- [, `! c% }6 a# L}3 w$ \4 n4 N+ H: W& W& ^

    9 H, c% G4 a/ U, r; z' E8 F这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑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 编辑 : r9 N4 K2 R4 j, V: F
    : c  E  _; P6 m5 Z& ?% r
    li2.1yong用指针:
    & P6 Y/ P7 A6 p# x% |0 P; c
    % g1 }& s" `- A#include "stdio.h"6 p: Y( w4 C; ?
    #include "string.h"
      E" N, p0 p, q7 [void Union(char *a,char *b,char *c)
    ( y& t+ W. K/ }& k5 {{. v! X$ ~! H% U6 @! ~" t8 p
    char *p=a;
    ! ^! l5 w% X# f% r$ E6 `char *q=b;( s/ i9 P- r" ?& ~# P
    char *r=c;
    ! ]+ a, v$ x) {2 s" Mwhile(*p) *r++=*p++;
    ( V0 H/ c: s6 p8 J. V: Yp=a;
    9 ~  f; ?% X, L( Yfor(  ;*q!=0 ; q++,p=a  )
    ! X7 ?4 Q- F0 I{while(*p)) [1 u, p; L) S. O8 Y. L. @
    if(*q==*p){q++;p=a;}
    0 }! R4 j2 ~7 N9 n( r. welse p++;  [: O* f: y& {( y! d3 x- O3 V; E
    *r=*q;5 |4 [: y& M4 J- d
    r++;, h0 R6 L$ Z& S* o9 ^2 x( T
    }, d& P0 E7 q. g, M0 L
    *r=0;1 v9 U# Z* b3 a
    8 t0 I' }) h& s% _6 }+ e& X
    }/ @/ O+ U% T1 V7 W% Q7 g) M

    & x/ J; x% p. ^" U" H  V; jint main(){
    ' z9 p/ b) q$ W$ q: l0 ~* @
    7 F5 r: r. @5 B" N; A7 U' ]4 e- achar a[10];5 h8 R3 X( [2 d% }8 ]6 H& X1 U8 G' f
    char b[10];  V( v8 B# H* u1 [/ N. M
    char c[20];0 i6 u% c2 H* M# P; N- A2 l. e# E
    gets(a);0 d, X: K6 E7 @- A
    printf("输入的集合A是\n");" F! R0 M! P4 o2 F
    puts(a);
    2 g' G0 U" S, N9 G$ v3 T' m3 `; B0 L+ B  B4 E" L
    gets(b);% u" S1 `' w2 e2 B( W
    printf("输入的集合B是\n");
    ; \- }# q$ {/ k7 }7 l) _: T, L* \; fputs(b);
    . y6 m+ o4 l  w4 ]% t- y0 \6 }7 d' V4 p9 J6 J, P) m
    Union(a,b,c);8 ^$ e3 M9 a, K4 R
    printf("last得到集合C是\n");
    + u8 B. x; [) fputs(c);
    ( O; p- V+ Y; J2 R  K( Xreturn 0;: q2 D3 k# T' m3 D- c4 \5 c
    }
    5 X" w* P8 I3 \, f, K! @0 n
    回复

    使用道具 举报

    慢跑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 M: M7 [, L8 D- a& t$ c这个代码是用数组的、算是比较简单的。4 D1 ~  d- Z, X
    , {& O  v, u% P" F3 k& @0 o
    #include<stdio.h>
    $ B" g1 q; X# s* r3 \- A/ t0 Kint L_length(char []);
    . o. `% }9 L! j% n1 V; mint main(){% C+ _' X/ S% \
            void Union(char [],char [],char []);+ U) ^6 N  n& ~' l& F

    4 ]5 A5 ]7 Q9 }        char a[10];/ |& d! P4 g3 ~$ f
            char b[10];
    , q) [+ H2 s8 X# Q        char c[20];
    3 J" `" x3 Z% ^: \6 X        gets(a);3 l7 j; I( V- ?* o7 z* p  Q, x
            printf("输入的集合A是\n");
    4 Z. {* U0 a* S: ^$ N1 D) s        puts(a);
    6 e3 m, ]6 t/ K! S' `, M: [* e
    ' i- G# T" ]! d8 L        gets(b);
    , O* Y9 b* D+ L/ N/ r6 D9 b* o        printf("输入的集合B是\n");
    ! H  H: {/ h2 K9 s% X$ o0 c9 ~        puts(b);/ ~+ A. |: h! Y( l& p- [

    $ V. M/ A2 z6 m        Union( a, b, c);
    ! _. `/ S/ }/ N+ l0 a+ L# v        printf("last得到集合C是\n");# N- p4 M; l; B/ i! J/ d
            puts(c);% q$ R* q  m! V' f0 \9 \' t4 ?5 S
            return 0;+ t/ ]# E0 y2 ~. a$ N6 c
    }1 v( u  @, m2 x" U. N- W7 ^
    8 Q! b2 i. [2 ~; h
    void Union(char a[],char b[],char c[])
      I9 z) D+ Q( l2 z0 m6 n: n5 t{
    $ f* a. c% \* ~* L$ f5 \0 h' D) t        int flag=1,t=0,i,j,m,n;
    ; y. ^. e& z. t+ q7 h# l        m=L_length(b);
    2 _% @6 l& q  F; u) X        n=L_length(a);
    0 N: c* Q. Y% j3 d, i        for(j=0;j<n;j++)* |: N+ p4 V8 Z' D9 z( Q
            c[j]=a[j];1 B4 [3 f! d5 R% b4 \
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;" H9 [4 ]# T9 m& ~5 l
                    {for(j=0;j<n;j++)
    + p' s+ g: C1 r7 c                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    2 K, {: d) M) z3 m                        if(flag) {  c[n+t]=b[i];t++        ;}
    ! |6 y0 h, e8 A3 g  L                }
      H7 U* Q2 {; r' G! D! j& Y        c[n+t]='\0';
    : b& G5 e" P) y: {
    " ]( a; X4 t/ R" q6 ~. l0 q}
    / L2 |9 d# z" Y. S/ R9 u+ Z" i4 V7 x8 m
    int L_length(char a[]); \- ?: q" _/ P* u( j
    {5 f! c8 }: \' I$ w' s% T( d6 k
            int i,t=0;;
    2 ]0 ]1 U% l2 t# s. t1 h2 {        for(i=0; a[i]!='\0';i++  )1 G3 q3 W7 s4 T6 A3 O
                            t++;9 a* Q- @% x1 B. w* m) W4 K$ t
            return t;
    0 {! x0 l% A6 E* W6 r2 f) ~}
      {6 h3 l: ?& M. K
    & u. ]; @+ c) O% n2 W
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 12:32 , Processed in 0.485055 second(s), 86 queries .

    回顶部