QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2545|回复: 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 编辑 ' i& s9 j' X$ I' @# D# o8 y
    . V& [$ M/ N1 {
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    : @, P% a, U3 H$ n刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    . L# z9 ]+ v3 X4 P1 ]+ h0 a" j8 d( G
    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集合。
    " e" `1 ~* a% Z这个代码是用数组的、算是比较简单的。$ w; A9 F4 e& {) t" @: Q
    : \; R: q# @6 E* Z: m! P$ u
    #include<stdio.h>- c( Z* x( {7 K7 o  t4 x0 k$ H
    int L_length(char []);
    8 X" r8 X3 K7 s, sint main(){
    & c: a" G  r5 ]: P. B; q        void Union(char [],char [],char []);3 t) d6 W; W; l7 |+ H% I

    + [1 g7 q( C1 m9 [# A& d! L        char a[10];
    . _$ z! ?; \" k" d        char b[10];2 A: e9 J. ?$ v2 N8 w( A5 u2 ]
            char c[20];. _2 V% e6 c* r3 I; ?
            gets(a);) o8 _% U9 B, F  t
            printf("输入的集合A是\n");/ z/ v+ x$ e1 @- t& n2 A8 x+ o/ T
            puts(a);
    7 B7 N: P) Y& f+ l# B1 u
    0 @& A3 T% Y" }% C        gets(b);
    # I5 Y/ I! V  U- M  N9 R4 w/ u2 a% R! ~        printf("输入的集合B是\n");5 k5 ?! R- h% M8 H3 g" f
            puts(b);
    1 R3 }9 C, a+ c$ j: V9 j2 ~$ I
    , L' g8 Q! {1 K        Union( a, b, c);/ S; {9 L8 T$ G* X6 T
            printf("last得到集合C是\n");1 Y, R/ W4 ~2 W8 x: w9 W* ~: l
            puts(c);
    , r1 K, Q. I" z6 N- y+ R        return 0;
    % \0 @- P; k. P# B$ m: y5 g$ T# b}5 v" T& c( ~) m1 ~* q, B

    3 v* r& C: ]; Qvoid Union(char a[],char b[],char c[])* D% E/ a6 Q7 e+ V
    {
    # l2 L. q7 G( @  a: v& X/ l        int flag=1,t=0,i,j,m,n;
    ; A; h% k& ?! m6 r) c: u6 ?" ~$ n        m=L_length(b);0 P4 u9 k2 k2 e
            n=L_length(a);8 l8 v4 c. t4 l, U
            for(j=0;j<n;j++)
    2 n5 F) F# ?$ v2 ^. c3 ^7 ]* ?1 o        c[j]=a[j];; f. E7 ?: _1 V* V* Y
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;$ l& ~' @1 s0 \5 n6 a
                    {for(j=0;j<n;j++), B7 M6 m+ Z: T) D8 i9 O5 ?2 t2 K
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了, S6 V, d0 U9 d* R9 K
                            if(flag) {  c[n+t]=b[i];t++        ;}9 U" q$ [, `- o$ \' V$ W
                    }
    5 ]) c3 M  Q2 ^. H5 i2 C        c[n+t]='\0';' T$ m+ F$ I( C" @" k

    9 Z7 K) v7 m; G+ z  G( e0 g}7 i& V! b9 e9 T9 O: b0 ~. g8 u
    2 W7 F& |. x+ }; P
    int L_length(char a[])* x9 K, n1 y  \  w
    {$ G5 B7 j& x0 O2 X+ N
            int i,t=0;;* R7 [  U$ ?9 M# w3 _! e$ Z4 f' Q
            for(i=0; a[i]!='\0';i++  )" ^* P9 W2 I9 |, O+ Y  }
                            t++;
    * p6 \9 z4 w4 u        return t;1 x6 P* s1 \0 N& t
    }
    4 r" l' _  t0 \1 M% {) y7 ]! w1 C7 ^. I, W9 K. ^# T8 ?! T
    回复

    使用道具 举报

    慢跑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 编辑
    . q* X5 @" L! q3 D1 F
    - x' B, |3 D! H6 b" d4 lli2.1yong用指针:$ ]5 E- e# k- E' v" X$ U, F8 A7 E
    * g' b" l' Y: p9 A. ^
    #include "stdio.h"
    6 Z' `" K6 w/ i+ o( ^# D#include "string.h"% E4 G6 Z9 u; h8 u! s+ m
    void Union(char *a,char *b,char *c)
    5 J; v) ]; b( }  G' A{
    2 l" A, d# h* b+ I" y' c3 F0 ]char *p=a;+ ]9 t0 e( c5 `. D) U+ r# A
    char *q=b;! }& e+ }: f1 u2 f, U% c
    char *r=c;. Z* d6 L+ ~  a. X4 v; T' k* X
    while(*p) *r++=*p++;
    % t6 R, Q3 p' H1 \  Bp=a;
    4 o( z7 `+ y: U! ]# M2 s  L- F3 Ffor(  ;*q!=0 ; q++,p=a  )
    " I7 d: u- s3 e& H{while(*p)7 e% w6 W& H& ^- F: P; p# u
    if(*q==*p){q++;p=a;}
    # o7 N# r. v8 V3 S; `5 D4 z+ [else p++;
    + H$ [+ E# o* Q( ^: [* t( e*r=*q;
    % H6 k" I4 X; }r++;5 @2 ~+ U  t& m% f% y% n
    }
    2 q& h) ?( b% K1 K! T! a*r=0;1 b1 _/ v* L3 Z5 I* W: z
    2 u+ ?6 E0 i: R: ~& U/ O5 ]5 C
    }
    " d0 q" q2 ]  @' z$ m* e. [' E, x) G" n. ^
    int main(){
    8 A2 m; f/ d0 q! r  D. V) J
    ! U1 o" I* a' d' ]4 wchar a[10];
    ' ^+ l/ F2 o% s: `3 ]; j. Lchar b[10];5 z- S. n) O% Q7 A
    char c[20];! Y: F8 W0 v) A+ n) V
    gets(a);0 G* W" `) S! |) W/ D- _
    printf("输入的集合A是\n");' d4 h! B# H6 \8 m$ z
    puts(a);2 n8 G" Y, j! Y" T0 m) ^
    - }' A+ q* V' H: X  L% [
    gets(b);% [2 Z& ]1 K3 P- c2 u% R, t
    printf("输入的集合B是\n");3 N( Z. ^! P' |. [9 ?3 [
    puts(b);! Q7 g( ~6 }, y: a
    6 k$ U6 n( s) Z/ _3 _. g
    Union(a,b,c);; A/ Q! _( P$ h# L& |/ q
    printf("last得到集合C是\n");
    . f4 c$ C9 s- ?5 M) K% s% Q  N" Aputs(c);( _$ e: i# p) n) h! @# L
    return 0;9 w$ B" D. S- m$ D
    }( C4 g) T( Y0 w/ I9 a% Q4 ~
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:1 _, U# E, W" z  c0 R
    #include<stdio.h>& w" b* @: y: T  e. F3 u) {3 g( [, L+ _
    ; q6 i, g% l" e5 p) C: ^0 ?
      struct node
    # }" K; t( h6 x1 j{$ I2 ~# I4 n4 i$ d
            int data;! `3 z! K- w6 T0 F/ j& L
            struct node *next;
    ( v0 s$ p  s1 i" G};
    & c8 c3 N3 M4 B, s% N9 ~( @//typedef struct node NODETYPE;
    5 O! C/ Z& k. z9 t8 J$ v, xvoid main()
    ; n! m2 |1 a  Z4 s/ D' W{2 l* z: T, O5 H) X  J) t& H
            //NODETYPE
    6 V6 q! H9 x5 ]! h4 w3 j# l        node a,b,c,*h,*p;* e( x% |/ v# W3 S: f
            a.data=10;b.data=20;c.data=30;
    5 E; ?' c: f% w        h=&a;
    8 ^5 ]' f6 M0 Y' c6 Q# `        a.next=&b;b.next=&c;c.next='\0';
    2 U3 D& I3 z0 ]/ G8 n        p=h;
    6 ~7 o+ o. G( J0 @3 H        while(p)" P6 {0 t3 w( d9 F/ o; y3 l! K2 S
            {
    5 m" Y: K" e. d1 T. T( L                printf("%d  ",p->data);+ w; Z* c# B4 j) b. k
                    p=p->next;+ X4 {( v" r# k
            }+ Y2 v) Z! V$ i2 l! o% H
            printf("\n");( r& L- Z, U9 H  x, ]' B! `
    }7 z) y0 C4 x# U2 a( D

    ! ]1 {& X+ |) S. f; x这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    此代码为生成一个链表的代码:
      V) ~& ~3 ~% U7 w( f! h( R#include<stdio.h>
    9 X% o0 R9 k$ r5 C1 Z1 B; y2 T9 p) R#include<stdlib.h>
    4 L4 G. j7 C/ G& p2 C7 Rstruct slist
    + d! L8 K$ t+ g2 ~{
    ; {& W" a* d3 R& s        int data;
    . F4 \) F" Z3 O$ f( h& a        struct slist *next;
    - N6 Z# P6 V- f. w7 L};
    % K- i+ A% v( s6 N4 \typedef struct slist SLIST;
    4 f2 P7 y% z. FSLIST *creat_slist1()
    + V( c0 S" J4 w; X{. u) s( f# R$ F, h% p- q' w! |/ }
            int c;. n5 m2 v+ T8 q5 F4 G
            SLIST *h,*s,*r;0 ]+ E+ q* F) \4 @. [7 L
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    3 w3 t0 z5 {/ u4 t, B        r=h;
    . L, @' B8 U8 I+ {1 S) w: K        scanf("%d",&c);8 {% m7 p, B% N& l
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    $ i0 D% E, K/ ?& m        {
    # Y6 X1 j2 h5 _6 e- Q                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点* X4 q1 V! H9 w- S. P3 V* z2 L
                    s->data=c;3 W( J6 N, ?3 s& T
                    r->next=s;
    9 @; T6 \% F- U" |8 e; n) m                r=s;
    6 |5 _+ V0 u# s/ a# x                scanf("%d",&c);0 ]$ x% p, ?2 ?$ h, U2 Q
             + i& b7 s( t9 l2 j
            }
    & N9 d- A: _$ F' d        r->next ='\0';
    5 u# u4 h8 g! G/ I! c        return h;, V) P, R8 s# I* x( Z4 N
    }
    ; y$ n* C4 j  N# ]6 W* a& k2 @
    5 e6 X' T) U2 X' O% o+ Y9 O& C/*
    ! T. |5 T1 w* I1 I6 L& qprintf_list(&head)! y, n/ N# U2 v: h4 {1 _. c# N
    {        SLIST *h,*s,*r;1 X2 H4 \& ?# e. c6 W7 d( {8 @
            int c;' r, w. {/ y' o8 J4 n2 h: A) Q  K
            h=(SLIST *)malloc (sizeof(SLIST) );
    / u' I+ z. d) t4 N2 ?* a( h        r=h;
    ' r: n& O3 u2 b2 ]7 n% d2 z% R3 P        s->data=c;
    & ~. r7 w0 h8 p; f" l- }. f% h# u        //scanf("%d",&c);4 ]: Q! [: H: F; ]! V
            while (c!=-1)+ @0 g0 T% J( X* x- @' r7 s
            {
    2 c. C, M5 l7 ?- x0 b                printf("%d",c);
    4 q- P/ ]" K$ V7 I% C( d                s=(SLIST *)malloc(sizeof(SLIST) );. e' s2 T; S" w$ q
                    s->data=c;
    0 i& }, s- a2 c# g# C; y/ p                r->next=s;( T9 n$ C9 H5 X1 T  W6 o
                    r=s;
    . v- O! }( p7 Z6 w" O, J$ r) J5 P                / ?* Q* m3 c+ g3 H) g7 ~
             / Z# f! Y( e  C4 l% O: \
            }
    ' K. g6 s9 d1 n7 J        r->next ='\0';3 Y& g! b& N8 h7 L- b
            return h;" G# l7 X" h) D0 ?
    }
    * L3 N0 H0 ]. L1 g2 Q" h*/, x9 J6 O, \: J# i, _
    void main()' q% {4 t: i% j3 [
    { SLIST *head;
    8 k3 ?! N9 w; Z& B+ t' ^: g
    0 X9 e! }. I# J! L8 |3 T! `4 Chead=creat_slist1();                //调用链表建立函数,得到头结点地址
    . l4 l/ x( b! ?  x8 K- J" Bprintf_list(head)
    0 S$ k, k  ?0 Y* b6 b}
    2 Y0 p7 f7 [- v0 A1 d+ |
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    3 D  T, P  `! ~; L7 G: W! b7 c3 U; ^3 @! E) I. e8 g2 X
    #include<stdio.h>* p# V6 }9 P5 k
    #include<stdlib.h>$ }4 X9 f* ]5 @. D! D
    ; O) Q8 h) _$ Z7 m
    struct slist, X; {4 G$ ]) r7 I  Q
      {  I: E  w6 \/ b
      int data;. B$ r) N2 ?# w/ E, n
      struct slist *next;( N. g7 l3 g! Y/ A
      };
    ( O1 M1 u" m# T' Z% l) \' ^: d  typedef struct slist SLIST;1 x) z" Y; w* G2 X& J. I; p5 P

    % n: V6 s& G' B( {" }+ | SLIST *creat_slist1()% B/ \& ^, P' E( ~2 X9 q% w
      {, I% H! m$ r. A3 W" b
      int c;
    & v/ D0 e2 y! e2 y4 R, M$ @* U  SLIST *h,*s,*r;
    / n5 D7 v; ?; _+ n  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    : q4 c# A* b. k9 a& B) R/ lr=h;
    8 m; R; R4 O/ t+ w8 c; F  scanf("%d",&c);6 {; P$ Y; O5 Q- `
      while (c!=-1) //当输入的c为-1时,代表输入结束! P! |2 V2 C" p; r+ }7 Z
    {8 c6 }! a- k/ q
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    * s4 V* ^( v3 d$ |  ~( ps->data=c;
    ( X% @3 H/ Z) u& Z  r->next=s;3 d, h' N9 C% g9 ]) v; }0 Q
      r=s;: w+ ~) q. |9 i1 t
      scanf("%d",&c);8 r- u) m- z9 j  y  \
    ! W- }: R  @2 n2 L! F6 r
    }3 _& Z- K+ E; A& _
      r->next ='\0';
    ! s0 n# _" {: ]$ J8 D6 d  return h;
    4 W$ H& _5 l2 b5 f' L. ^& ^% t  }
    5 t1 d. T. I8 d7 ]: s. Z1 R0 K* H7 Z, ] & x4 m8 I% v% J% d3 e! X
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?: e0 g# |0 _. f" H  {, x  e
    int printf_list(SLIST *h)
    1 F' S3 y7 k0 L$ N4 P& F7 T  {& o4 V2 N) k, j9 p: j" h# q
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚  C) V5 C/ h: |9 j$ h3 ^5 I
    while (h->next!=0 )) G' Y' V  H/ z# |  O
      {3 q. I( k7 M, {( j* H% f  u
      printf("%d\n",h->next->data );
    % U+ a/ X, |+ d+ q2 u* T  h=h->next ;
    ( A7 {% [  K8 Y. @0 N  }
    4 Q, P% [% b% ~4 P2 K1 E  return 1;
    7 o% \/ z1 u" G$ I" d+ s" H; i  }
    ) n# O. {8 ]: m+ u) m1 p  /**/
    # ?9 O5 s3 }+ K void main()
    & Y9 e8 O# E9 i$ _, B  { SLIST *head;" |+ x9 a1 K; B) j) I
    / ~7 u6 R+ v  ^+ e
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    ; z/ m' d( c6 w* n# G' s: i- H9 aprintf_list(head);- _0 u' N5 W5 l. u% j! L! A" t
      }9 K0 `( ~# ~: P2 n
    " s& Y. l; d- Z( P
    0 M& U$ `( E- p; d0 Q
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    fastpost qq
    收缩
    • 电话咨询

    • 04714969085

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-31 14:20 , Processed in 0.234310 second(s), 83 queries .

    回顶部