QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2549|回复: 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 编辑
    , w& {3 n  L: V! \# i' n7 S: E- o
    # [# \# z3 z( ]计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    , I0 E# o. W: b) \$ b3 v, x4 f刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。. _0 e! U) o' V6 ~/ w- o
    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集合。
    7 N+ L- {/ ^( I% U4 N这个代码是用数组的、算是比较简单的。
    0 ~6 r! ]4 R7 T. s7 N' N
    : X9 N& n% j  g  ]#include<stdio.h>% |2 d9 B: i+ w. ~" ^
    int L_length(char []);
    ( g7 d1 |' U1 y# s% {int main(){
    3 C6 v2 V# K1 ]* q& p2 t        void Union(char [],char [],char []);
    ' G8 `9 o0 h- C5 |  u
    , v" ^$ D( f) \, A        char a[10];* r% s; o& ^* w- l2 [2 P
            char b[10];
    : N8 ?) I7 G9 w* e; F' K5 g        char c[20];
    , e8 u& i) B2 \+ n: u- r& t) Z: O        gets(a);
    + m2 d- H+ k' Y7 c2 A. N& K        printf("输入的集合A是\n");
    3 N6 T& e% h" N+ d" C4 N7 h        puts(a);* |6 u6 {& Q0 b/ \; o$ b

    % w& o0 R; u' ?1 x, D* a. L* t2 I4 e        gets(b);: z5 s0 ?; f. i) F+ A. M  X
            printf("输入的集合B是\n");
    ; A  G& `2 O0 K$ z, a3 r        puts(b);
    2 c8 _  W3 Z5 d8 A* ]2 u9 @3 L! [- C  p/ E/ i- C/ n4 w0 F
            Union( a, b, c);
    / N8 [1 m& g# R        printf("last得到集合C是\n");
    6 o" T  r% ^' M8 f% O        puts(c);
    $ t0 r: [5 u5 A3 |7 v8 H; s        return 0;
    - c! G3 \( O7 j8 h6 K: e9 Z4 F}
    4 U. j2 @$ A8 j( S/ h1 y* ?
      y6 r( Y- m+ k: E8 _6 Avoid Union(char a[],char b[],char c[]): w7 v, \" s# ~5 j5 {- @) j8 y. w
    {
    % ^" _7 W5 A9 V; i        int flag=1,t=0,i,j,m,n;1 ?+ g8 e  o7 |! R8 q
            m=L_length(b);+ g( i6 H! t0 ^8 K7 ^6 a
            n=L_length(a);
    - U8 z9 l) H6 A/ O2 |. Z2 U; \! Z        for(j=0;j<n;j++)
    " D: _* |6 I* ?* R        c[j]=a[j];
    9 y9 r5 R% t) g  v! b        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    7 E& x# f' v' H! {* q                {for(j=0;j<n;j++)2 i! h8 G; B7 R
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了2 u4 K* ]$ x  ~0 W/ x, z, {
                            if(flag) {  c[n+t]=b[i];t++        ;}  A$ b1 n- S; E* d
                    }7 t& K: S" l& y4 [8 K, T& t5 ^8 L* k
            c[n+t]='\0';( f4 A4 \, O6 P% e# t

    9 d7 w* ]) b- I0 O  p}& r/ I! T& h+ X- g" r4 p+ p) y

    ( H- r) U5 k% h/ xint L_length(char a[])" G. \; o* E0 m) W0 \
    {6 W: C8 W& `# v6 `8 p3 e$ V
            int i,t=0;;0 U, @8 ]0 W# B" D1 i0 W
            for(i=0; a[i]!='\0';i++  )
    + R- R) A3 Y' g7 R) v6 e                        t++;
    % `5 }) g: |. {        return t;
    % d4 p7 S) W5 O( N}   g0 W3 |& u! L9 m0 G* a

    3 N- k% u: \' t; G6 V2 l3 ]
    回复

    使用道具 举报

    慢跑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 编辑
    . h) u: e6 n. x) H7 }% J# ?: B. n
    9 h( Z3 }9 r& _/ Xli2.1yong用指针:
    5 M, K) V6 S! S+ M3 I
    / s0 {6 k4 s7 ^+ S, G# ^& p  {#include "stdio.h"
    - b' x* [: w4 n0 @1 S#include "string.h"7 I- Y: w$ I5 ]; V
    void Union(char *a,char *b,char *c)  O# x- Y  s+ t# i0 n
    {
    % |5 _+ x6 n4 {. e; Jchar *p=a;
    4 q( H2 z5 V4 echar *q=b;/ J/ D. H, v# Y: Q7 C' G
    char *r=c;
    ' `% t: w# G( w- k0 }2 Dwhile(*p) *r++=*p++;- s9 s, ?& \3 h. s6 c
    p=a;
    ! d' g! H+ ~8 [$ U! c6 Y1 ifor(  ;*q!=0 ; q++,p=a  ), x! E+ D0 t6 O
    {while(*p)$ s% x* a+ K! x  o  z# j9 Q
    if(*q==*p){q++;p=a;}
    " [$ G1 B  A! l  z( F5 V9 n& D( lelse p++;
    6 R  V4 @9 s# t, M% K8 N, {# d*r=*q;" M$ g. {" ?" z" a3 k& o0 f
    r++;9 G: ~% p2 g. \* d
    }
    * I$ t; G% `/ F- B  J1 O*r=0;
    : s& O, G) }* ]# [/ l5 V9 |, _1 F+ T1 b! p) S" z8 d0 n0 t% B
    }
    , Z4 \  x' b+ x" T5 S. E2 w* e1 E% d! O$ |
    int main(){+ |$ ?$ e/ H: B

    8 s9 X3 K1 e9 z. x" v; O, Ychar a[10];; S% T: @! u$ v1 m' E: K/ |
    char b[10];2 j- G2 f- T& j. h. g. p- b
    char c[20];
    $ N" m+ G" s/ c, s- {  S4 egets(a);
    ' J# [7 f3 R, j; s; E  cprintf("输入的集合A是\n");  M5 x: q- Y1 y+ T! q9 n) j6 |
    puts(a);
    / ?& Z1 f- u/ W
    8 ]* Z4 [6 U, ngets(b);
    , Y1 T. F( c; O6 a0 }: c& S5 g5 ~printf("输入的集合B是\n");2 C9 a: P5 S5 X+ ~5 Y( i9 c: L
    puts(b);
    - C8 x# [( n- B* w9 f- S9 ^5 O3 B! B0 \% }2 ?6 F
    Union(a,b,c);
    $ j* Z! h9 i- I8 |% t# Eprintf("last得到集合C是\n");
    + E7 R& j4 j- \9 D7 P0 @) zputs(c);6 I: t, c! [6 f! l4 J; Y
    return 0;! D1 J/ `/ f* q0 c
    }, F7 z% X7 Y3 O0 h3 L  z8 i
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:4 P, |3 h. ?. N) s
    #include<stdio.h>
    . c0 `" C! o; \4 d  s8 _; Q8 {' j* V7 f8 Y2 s' }; W! Y
      struct node
    . F" {! z+ R5 T8 _& f: c6 G5 w{2 V$ H- F( X( F$ _9 \( |( E9 Q
            int data;
    6 `( R$ H5 G, E- H( Q        struct node *next;2 x2 o2 f7 x  c4 M
    };
    + M" M0 J, {$ I. ^//typedef struct node NODETYPE;
    : W& Q# z4 f: c! G' ^) w: Z# w- Fvoid main()
    / i3 F" y. Q. ~2 h! b{) h$ w$ d  C* w$ ^
            //NODETYPE
    - X/ G# C, R: j2 F0 D8 Q$ Y2 |' `# ~        node a,b,c,*h,*p;" i1 [. f( t% `" m/ `
            a.data=10;b.data=20;c.data=30;
    - A( N6 _! ~6 Y( X# X; l        h=&a;
    7 I4 k+ u1 x8 X, s- l        a.next=&b;b.next=&c;c.next='\0';1 L: b/ ^# A: N
            p=h;, Z  k' m1 q3 ]5 b! q
            while(p)5 q: h0 a. {+ O. o5 l8 c4 x
            {& t3 J9 P0 E: N8 z: H- N; P, x
                    printf("%d  ",p->data);
    ( j4 q8 G$ i- h' d1 x                p=p->next;- c  O; d6 V8 I1 x7 U" {
            }- A; @  g( p) h/ @; `
            printf("\n");9 b' N5 k) n8 k5 E6 Y% _5 `
    }& ~2 ?+ U/ |8 }; y

    % I1 w( {' x" s2 H  L# K这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    此代码为生成一个链表的代码:- `, y* V' O. _* _& U# X2 b& Z( h
    #include<stdio.h>9 x# X2 p; X: b
    #include<stdlib.h>
    0 z: L! s5 @) @/ v( `8 g, Fstruct slist8 N  `  r" o  H8 x" S! Z
    {* X9 l- k0 }7 x: i7 |" F. H
            int data;' N5 u% s3 J0 J5 J: X8 d
            struct slist *next;
    & N) `. x4 ^/ y6 \}; 7 g9 m* z! U0 d- f1 j
    typedef struct slist SLIST;8 `# i, c. P( R- r5 n4 {# e# _
    SLIST *creat_slist1()8 \  J4 d2 y5 k, ~2 C& s
    {
    : L, \! F+ g, B8 f2 H        int c;3 o2 H, |0 F; m8 O
            SLIST *h,*s,*r;
      d$ v3 ?' F/ B5 `& d* v        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点: G5 o& N& S. \( m
            r=h;, o8 x! z/ w  {
            scanf("%d",&c);$ X" w/ m& b+ J  i8 T8 [/ d4 R0 p
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    1 C+ S* R* I; \1 B        {
    9 K7 |: I5 ^4 n  N) O                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点; O" m! F$ k. Z( `
                    s->data=c;
    5 Q, l$ y# F) G1 K7 y1 F                r->next=s;$ M) g4 d6 t( Y  r& Q- T
                    r=s;
    ' j& F& T& ~7 ?6 N% \2 a                scanf("%d",&c);
    3 h+ m1 m! r4 M         5 p; v3 y- V5 `) j
            }
    - i& T3 j( {/ [* r" W  o8 F6 f        r->next ='\0';% @. ^- n& d9 k
            return h;8 y/ y+ s' L& Z
    }
    2 M- g* }: `7 z! e+ R! c
    1 _7 M9 N* T  e. u/*
    # t; L! Y; i/ ]+ K$ Aprintf_list(&head)
    % X( A( P/ d3 r{        SLIST *h,*s,*r;+ J* p. O+ Z* _5 x; P
            int c;. B8 c1 O  x0 w, X
            h=(SLIST *)malloc (sizeof(SLIST) );* e, B* ?3 R4 m: T8 P6 d
            r=h;
    ( \8 C* U! g/ T1 ~9 n+ z1 [2 o& V7 ?        s->data=c;
    : T" _5 J3 p' Z7 `' i        //scanf("%d",&c);" O* O7 r2 l8 ^: V6 {# }
            while (c!=-1)8 f5 I; M( n9 E& i, ^; @
            {3 o) |) N/ _9 I5 d# {2 ]9 Z: T
                    printf("%d",c);2 W. v. G- p, N& u' V: p
                    s=(SLIST *)malloc(sizeof(SLIST) );
    # V* `1 p# ?4 j# P& @: Q8 d                s->data=c;
    ) v- K9 s) j: X  C+ g8 a- ?                r->next=s;
    4 Y2 `7 h; X  r2 S' \/ o1 F                r=s;
    , @: @( u: i; P) {3 A& n# z- h# l3 E                9 y' R( U& Y& V) [. `% d5 p; z: J
             - j% u. V$ F: r0 }1 ?
            }5 d# f, ~+ p! j. U' i9 A
            r->next ='\0';" J4 a5 k- U/ J% [2 e. E2 w
            return h;8 N4 j  C3 I- V4 [
    }3 b  D9 s7 ?% e8 [6 o
    */
    * S, b$ [( `. W2 E3 f% \void main()
    / r  Z: l) v- b- `. H{ SLIST *head;; ^; G# M! [( i( {
      J; {: ]2 M' D  Q/ L, |
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    / Z* Q* Q3 }) ?( iprintf_list(head)6 [- E+ c3 w+ v: v4 ~$ U
    }$ d# L4 C. i! `) Z$ U8 z6 r" G( O0 V
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。# t4 v' ?. J' _: l6 W. M6 ]; O9 [

    9 y/ h% H9 `1 J; I% T9 r6 Q#include<stdio.h>
    ; {, Y* G1 t5 a0 x9 V+ p2 I/ }+ D #include<stdlib.h>* a% B& t5 G! z8 x9 v! q

    & W& x  E7 P% o! p& I struct slist; l' ?. \' c$ B: [: G
      {
    ! A+ F9 b. [$ H% V- c  K/ n  int data;! s' D5 i6 \# ]( `1 G
      struct slist *next;
    & I2 x% ]3 ~+ r/ Y9 J# _. b, x  };( @) Y6 x2 e5 [  R7 Y4 ~2 K
      typedef struct slist SLIST;
    9 l7 X6 r' [( G. |" E4 M
    8 ~  t% C: Z+ S& [3 K, V SLIST *creat_slist1()
    ; M- l4 V& X  P& X  {( k" T  @; u) \; S# D2 ]
      int c;
    ; w; L: I# ]5 N8 `) O* h  SLIST *h,*s,*r;
    ( W9 p& F# l! p  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点+ o9 R& N+ u" O6 @; }
    r=h;
    6 T- r  m" w4 j  scanf("%d",&c);" c- M, q0 U2 h/ U
      while (c!=-1) //当输入的c为-1时,代表输入结束' E7 r; [3 w2 x+ E% E" g5 E
    {
    $ P" J$ i! ]8 v. M" Ps=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    8 I' e8 u+ l( m( D1 Es->data=c;4 E# e9 r5 O  d# T& C' J
      r->next=s;
    + x. r/ g. l' |& W3 e# S! u" B2 m  r=s;
    ) v9 B! \3 P0 L- H( |- S5 L0 T  a  scanf("%d",&c);. @  G& w* ~- c! t: Q* {" k! T  s

    ( B! R/ \3 R( ]( l. f}
    ! J& G- {2 @6 x5 R0 n8 [  r->next ='\0';
    ! q3 u, A' P/ F# J# O  return h;
    8 n6 ]: \: K& h1 `3 B/ E4 i  }3 f/ i8 _4 t+ P- C4 I  e, p
    4 J. E' V# r! |: n
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    # {: T! u  Y/ H" g5 t6 |4 G% `int printf_list(SLIST *h)' J" Z9 f" K! G( s  U3 f4 e
      {
    " ^0 @! R7 B) G' O. c9 h  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    9 p  A: W  C% A* ^; ^) W while (h->next!=0 )
    2 {% P% r! y5 H4 ~  {# f, \6 `/ q3 }  @; x3 r
      printf("%d\n",h->next->data );
    7 m: c; }! W8 d4 s  h=h->next ;
      G& J  W) @5 h* w  }0 T) Q$ n: ?1 i9 @
      return 1;% w1 y2 b+ d% @6 S( j; |! [
      }
    , p, G" p1 W6 p  E4 H  Y  /**/6 P% H! Z8 I- r0 g( F, s: O
    void main()  R/ W5 L. p  J" w& V( i
      { SLIST *head;
    - n5 Q# X% D/ p; U, ~6 `
    $ m& e* {0 e% f: i% P+ S5 y* chead=creat_slist1(); //调用链表建立函数,得到头结点地址3 Z  g$ u% p$ I. t2 D
    printf_list(head);$ ]! t- }, }1 m" m+ `
      }
    , z0 K3 ^! f; K- z/ {
    2 J$ d8 j7 u! @# f/ E! d! N. G
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-11-1 04:05 , Processed in 0.220392 second(s), 82 queries .

    回顶部