QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2407|回复: 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 编辑
    + h8 h/ L7 d9 Q- e% O/ S$ ]5 x, L9 m- W0 o, J
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。5 Q& r4 \4 q9 D, l/ o
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。9 v4 v- p! ]7 s" X. _2 S% E% 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集合。
    9 g/ V$ L7 h6 i" d% }# l: n这个代码是用数组的、算是比较简单的。0 L9 g2 f! z8 Q. _' u
    9 F' o: r1 H0 |
    #include<stdio.h>
    . m2 K" d* H. y2 C2 ?int L_length(char []);' a5 J9 H+ j2 r( P; y
    int main(){2 c7 z& o. D6 W
            void Union(char [],char [],char []);( W) a, ^( h+ P4 D: p! Z. U& n
    . r1 v  J8 @8 M- |; t2 H
            char a[10];
    4 ]+ I+ F/ Y+ I8 v        char b[10];* `! |- [  U/ U; p
            char c[20];! g) J% _! w9 T( i( Q$ ~
            gets(a);
    # V! j# C2 n* u5 [1 q        printf("输入的集合A是\n");
    + L5 w5 C" s8 j. B; O        puts(a);, D9 C% k, d6 [. T# Y. S' u
    * N/ X% ^$ {+ y+ E4 j6 ?0 N9 b! R# w
            gets(b);
    6 G) m8 @: y) v+ y8 L/ g! ^; Q8 X! t8 u        printf("输入的集合B是\n");
    ( s4 g0 ?! r5 O2 D4 ?        puts(b);
    4 {" A6 b- i9 U# |/ m2 V
    , F" G2 s9 U9 J9 I/ q& U! W        Union( a, b, c);
    5 m3 a8 f8 t5 W4 G$ |        printf("last得到集合C是\n");
    2 H2 ?7 n/ t: C) J# T% e) U: ?! S        puts(c);5 w: d: p6 k8 h9 B4 q
            return 0;0 \' I4 y" ~) _) f+ E
    }6 D8 A7 C7 T9 n% N  v
    6 V" s8 N& n/ `6 ~' Y7 b' |& b8 C
    void Union(char a[],char b[],char c[])% @/ E( b; G4 k' q8 O# N5 W
    {$ e; e: |) c# N
            int flag=1,t=0,i,j,m,n;
    ! W. j3 s# W+ n  b: |1 t4 s1 O        m=L_length(b);
    ! P6 G: q) q" B8 i$ \        n=L_length(a);& L9 P/ v  \2 w
            for(j=0;j<n;j++): @% U% N& i1 T! b( o8 y8 Q! P
            c[j]=a[j];
    6 J. I6 s! w  i* k* w        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;- i& W% L" N, \4 m. A, p
                    {for(j=0;j<n;j++)& U) ^9 u0 T8 x; w4 P- l
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了. P* @% [9 @* F# E9 @6 g/ l3 @' \
                            if(flag) {  c[n+t]=b[i];t++        ;}
    8 c. _& ?% i3 s4 Q                }
    / ~2 [, W9 V1 k; t" U" `$ o1 j        c[n+t]='\0';' o4 G% F  R. i, x& b, \- k

    5 C, f. ]+ j& P}
    ( u5 c9 Z/ R% S8 e3 a9 @* S
    1 X& V7 |* D% z! y' I2 ]% {int L_length(char a[])
    . r2 P4 g# [0 w* c{
    & ^0 m8 J( u5 w: h1 `- I        int i,t=0;;( L  [  d+ I$ I% ]( `
            for(i=0; a[i]!='\0';i++  ). H3 [* C8 F9 \
                            t++;, D& o3 B5 w% i2 z) Q
            return t;
    8 |: q6 |4 U! B$ P8 C# I/ G/ s9 L}
    ' h" L: @; U3 v  H1 m' j4 ^+ L  @. M( Z2 O$ [' ]* \4 ?
    回复

    使用道具 举报

    慢跑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 编辑
    6 ?0 e0 J7 d$ a0 `6 B/ U$ k. Z3 E& T# [% [
    li2.1yong用指针:
    3 L4 u1 ^6 K  W
    ( m9 J% S4 @2 a8 O- ^! e#include "stdio.h"' h1 R* d4 D0 D- F: y9 H" F0 P
    #include "string.h"
    3 Y& j; T4 b$ x# _# [( Svoid Union(char *a,char *b,char *c)2 B2 j0 n! s( S2 m; m& Z$ q
    {& Q' a0 n( G; @0 e9 g1 Y; ?5 j
    char *p=a;
    8 ~9 J. V% h0 _char *q=b;4 c- |- F4 W) W
    char *r=c;7 Y  L* C5 Y" ]2 X1 |9 t9 b7 `
    while(*p) *r++=*p++;
    & L1 v* q9 y0 ]! L5 I( h1 np=a;" ^/ Y) U, V" ^! Y
    for(  ;*q!=0 ; q++,p=a  )$ \6 w# m! e7 W% u; o  d, J
    {while(*p)8 M: Z7 H$ G: i( J$ e
    if(*q==*p){q++;p=a;}3 g. n5 i! o/ `/ C
    else p++;
    . i9 o# ~% R6 p*r=*q;- W8 T# c) S; i) N0 a1 k% [; y
    r++;! f" l) L7 v. r# ]0 L7 ]
    }" x0 ?; G6 G1 r; G- E9 G& P! b
    *r=0;3 W! a, {- W# l( @7 y  z/ P' t/ R" D
    . @, l" v( |7 d1 b! a
    }0 T; a: \- z9 w! d, G! b; i
    / `/ r. t9 B7 u! t8 _" G
    int main(){
    7 s. B' H/ h, M0 i( w. Z* P: o& _$ o% L, U! D" G2 `- w
    char a[10];
    . e/ j- \3 y1 x+ Q# W2 b, Xchar b[10];( N) i% G4 r. h
    char c[20];2 }  S- N2 `' \0 D) E6 n& C
    gets(a);7 d2 \3 B" p; @& _
    printf("输入的集合A是\n");6 x# b' Z9 C$ `2 `
    puts(a);0 B) X; |; I8 k4 N4 Y. l# u) ~

    1 P4 r! l3 c1 X2 ?! ygets(b);0 l8 a1 }7 e( }/ P2 w; Z5 ^  W3 e
    printf("输入的集合B是\n");; Z; {5 ^% v- j. {1 `
    puts(b);
    7 C8 c7 I0 P8 ~# {4 A
    - t2 B- J+ J/ q- }Union(a,b,c);
    8 n4 j; H3 R7 [. a2 e# n1 S% B' a8 H2 `% Xprintf("last得到集合C是\n");
    . g- T! ^/ K9 g- h+ a/ j# L6 Dputs(c);$ `) P5 K( c% ?; T3 o, t8 v* y
    return 0;, v4 D4 c0 w7 s, C$ U
    }
    " N7 F- i0 `* h9 _6 o8 L
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:& ~8 n6 E$ t1 g1 I. p9 n
    #include<stdio.h>5 D1 T7 d7 v6 l- s4 H" z

    ; {) c5 A; ^% \/ u3 }1 [5 k  S' {  struct node
    + K) I" l+ [# t{- V6 i4 k7 {. X$ p/ R. _. v
            int data;# b; D8 c8 X$ F( |6 g3 V" R
            struct node *next;7 e) m/ a4 }) n. T: Q& R9 I
    };
    % Y: ~7 \2 B6 C: n4 D% J+ t# |//typedef struct node NODETYPE;4 `. b( T$ b0 {* d7 L, @5 K
    void main()
    , z( H5 x" n7 T- M& Y9 n( O, C2 R8 e{2 z# j- C0 O) \
            //NODETYPE
    - o3 t$ c4 R3 {9 j: [( L, L) h, |        node a,b,c,*h,*p;7 Z0 m6 X' e  }; X
            a.data=10;b.data=20;c.data=30;& \( g6 {8 U' c% p
            h=&a;. ~, z+ ]' j/ V
            a.next=&b;b.next=&c;c.next='\0';
    , Q% m, w1 ]3 x        p=h;+ {' k% n9 D: C( F9 M/ |$ S
            while(p)9 `6 ~) T- I0 ?: R+ c/ |
            {! X; q- {9 [" u/ d$ o
                    printf("%d  ",p->data);
    - |0 m: {) l9 F; l5 h, a                p=p->next;
    + E9 Y  R( t( Z6 n3 \& v        }) ~3 Z2 H# `- ]' S
            printf("\n");; J1 U9 ]1 S" c0 l4 v7 _% g" b
    }
    $ D) @* H8 m% i' G1 o$ ~' }/ |7 L8 W3 [: Z( X
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    6 p% y, r" n  I& M" j  s$ P#include<stdio.h>
    2 o1 L) ?2 d/ S#include<stdlib.h>
    ) [7 ~$ |' I# h; [& D# W6 bstruct slist9 s1 M$ ^$ r' \  W7 v: n
    {# M. B9 Y3 g! t, l5 T( o
            int data;  J0 Q9 O* Z: \, d3 b; ~7 \, l; w9 Y
            struct slist *next;
    ' ]8 k: Y- z, n/ [4 o& Y};
    + W) p+ W" `7 {% V, V6 O$ Vtypedef struct slist SLIST;
    / Z- z7 R2 E6 `' k/ RSLIST *creat_slist1()  U" X8 L2 r7 P6 k6 b3 Z, T. T
    {/ w+ o5 l* j! {' J. \1 D
            int c;( j3 v6 i' a7 C6 z
            SLIST *h,*s,*r;
    $ ~6 v  @( z& @1 K8 X/ Z        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    / a& x% I2 l4 [# C6 B6 ^1 c        r=h;0 I; \1 K' S5 Y& `- \- ?
            scanf("%d",&c);
    $ Z) |$ }' r: F) }* u7 Y5 n        while (c!=-1)                                        //当输入的c为-1时,代表输入结束9 N4 Y. x7 |4 _$ z  {6 F/ j
            {
    : R* S+ C7 ?& c- R8 A                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点9 t' \$ s" y4 r9 Y) A) E
                    s->data=c;/ E6 x3 O$ Y9 F
                    r->next=s;
    , y0 y  \4 D$ W+ B0 B                r=s;
    ( V- ]& g) r/ E4 y                scanf("%d",&c);3 q% w9 z% L' i; q1 T
             ( Q: J9 q( Y3 g6 ~
            }
    6 c" U) i7 \4 j  e/ t- ]        r->next ='\0';
    : T4 P' ?: P8 O, y% Q* W3 \+ a        return h;
    5 R4 N3 W2 j; I9 Z6 ^9 ]$ _}
    . b/ y" z3 _0 x8 N- B' F* `- K% a6 X- d: @1 O5 `
    /*
    9 g( H. ?; a* f3 j, L# Kprintf_list(&head)
    9 _1 P. R9 D$ Z* s1 N9 d9 i{        SLIST *h,*s,*r;
    5 |$ A  ]  h& k* u; H5 T  X        int c;
    9 m2 ~2 f+ c, n" N/ B- F0 `8 V! t* \9 F- g        h=(SLIST *)malloc (sizeof(SLIST) );
    - i2 d- U) T, Y+ ~        r=h;
    3 t2 R" q: h0 p8 G" W        s->data=c;
    ! M0 a" M! A& L' m  B. w        //scanf("%d",&c);8 @0 E3 k3 ]; n7 o7 i& ~
            while (c!=-1)
    ! M  ]) Q9 N: b# D        {
    $ V$ b7 |4 H7 K) X9 R( Q+ ~& s                printf("%d",c);
      M) @, `! P1 `& S( d9 i2 Z                s=(SLIST *)malloc(sizeof(SLIST) );1 o. i  ]! \7 q& W4 e
                    s->data=c;& z& V2 L9 D" ]) z7 j7 I" {
                    r->next=s;
    5 ~3 P" ?3 w- I% ~5 z5 H                r=s;$ {  m7 J( g& s3 e$ N1 D
                   
    ; y( N1 V# ^5 A6 z; }/ h         % `3 _3 u0 v. U2 P5 V
            }% H) z. A5 [# R: L
            r->next ='\0';- \+ m* E* |* ]+ S0 n; i2 D
            return h;- Q2 F* ]" V$ P0 C, o2 J7 n: V+ S$ ]& K
    }" q( z8 j5 f" K$ u4 I
    */
    , k) o  T6 ]0 G) Y+ Y  pvoid main()
    6 u, |$ k# X- q* o0 h{ SLIST *head;/ K! G/ }! ^# E4 I0 G0 d

    ) X9 b/ ?) J8 p, d+ ]' |" e; Qhead=creat_slist1();                //调用链表建立函数,得到头结点地址
    8 m# F4 b* {6 c2 H& J% k- h* Jprintf_list(head)
    ! ^$ [4 y' u# f9 y9 a7 C}
    0 s1 J6 L- L. a7 P2 h* p1 y
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。! U2 E- q8 X8 L9 I+ l
      \8 P' d* c: f. ~3 V
    #include<stdio.h>
    & ~) k  }9 j* P  r" x% @1 i #include<stdlib.h>; H4 v0 f( i" n5 Q- Q. X4 r

    ' x( n9 F' g# n! d2 v- d struct slist
      E+ K8 |, y, C) p( X+ I3 v# o  {3 ~2 d* i  K" X1 _) s; `
      int data;7 y( P/ k. K: A% d- h) O
      struct slist *next;
    ; R* ?2 m2 H( j1 `8 f2 z  };( W8 ]! [8 Z1 p* V9 ?( B$ o# J
      typedef struct slist SLIST;0 @- g/ s0 f! C2 S- o8 y4 I

    2 w& I# A& y$ g SLIST *creat_slist1()
      Y& p( M- S4 S  {
    4 K  r; F/ X1 B* j/ ?; @  int c;( Z2 t2 n: F  @
      SLIST *h,*s,*r;4 [  M* {( s9 W. E' d
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    - H2 k+ }" d9 H( zr=h;6 B% L, l& ?* ~+ O* H% G" V
      scanf("%d",&c);
    - A# B1 R1 A; {  while (c!=-1) //当输入的c为-1时,代表输入结束
    - v; E& N& ~! V+ O& U7 h6 B{
    4 ^: U2 t  ^# f6 S, s7 S% T2 w, cs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    4 [) p9 v6 Z' M9 k. Z/ D/ Rs->data=c;- n% o% u+ |0 U0 o1 a4 {; L
      r->next=s;
    & K3 h; z' U' @9 f. k. m4 h  r=s;3 H3 ?4 p, H! z, l5 T( Q. C4 S
      scanf("%d",&c);( [, t1 j" p' R* ?% s

    * X2 Z- k! B8 D$ |! j0 `& r6 M' ?}
    % @0 x) F# T# Q. R7 v. {  r->next ='\0';
    8 l9 i. b& ?1 W2 S. V* U  return h;& Z4 S# S6 Z! r& @
      }
    : ?* C1 y  ?. Y & ~+ z/ }# K# d2 z
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?  n- }8 Y6 G/ `! A1 m: e
    int printf_list(SLIST *h)
    ! j5 {1 D% v& ?* j: P  {
    1 n0 r% c' W) i! Z9 N% e+ Q! c% H  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚* r7 M3 B* o7 [, i  P9 \' ]
    while (h->next!=0 )
    : h8 A# z0 X: X/ u  {
    1 s& M0 T: g5 [4 I7 E9 b  printf("%d\n",h->next->data );6 O( A, G, s2 w; t  [$ ?2 u5 J
      h=h->next ;/ T/ H# [, ^* X/ z1 ]" T) \3 D
      }
      X4 D. K4 F: D; ~7 J* D4 |8 ~( l  return 1;
    0 L4 U$ z3 u% e* q& X3 P  }) `. z  [( [( o! j
      /**/) n* B/ I; A; T! J
    void main()
    $ N  D4 \2 S- a  { SLIST *head;6 x* \. E9 l5 C' X8 [) |8 w$ [
    , A0 I, n" H# Y+ s
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    6 Z  v6 V4 b% Y8 T' aprintf_list(head);
    * h7 N/ ~6 b0 K$ A  }
    9 M4 l3 B! B/ ?% P' w' i- L$ n' r2 L5 J  f% K; r' P

    : X3 E. l8 ~& M6 `" n4 X- G" \) N此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-19 11:21 , Processed in 0.468567 second(s), 83 queries .

    回顶部