QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2364|回复: 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 编辑 & f9 F% C5 \' L; g/ f  N# A
    $ k. d  J  I# {+ w1 l
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    . w4 `: m+ P; z% d" w8 F刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。- L! c/ ]. k. ?1 T" X0 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集合。
    & s/ }1 q- P; r' j这个代码是用数组的、算是比较简单的。+ n, ]3 r1 C2 V/ w! k5 g2 ]

    + x# l/ y5 [! H+ y# h  @4 V1 h#include<stdio.h>
    3 r# P2 t. H* k0 h  Y8 X' V1 Gint L_length(char []);
    " ~; g  ?9 N. \+ E5 \int main(){: T) _' N0 T9 W7 U- ?  Z7 g
            void Union(char [],char [],char []);
    " U( \6 v* C+ v; I! f4 M- S
    ; M8 u) S% e7 R        char a[10];9 D  A2 o6 D% I3 S
            char b[10];
    " J+ G' T8 a9 M. S( I3 U        char c[20];. K1 Q9 d1 E7 w& Q* m4 B. X
            gets(a);' o# ^; R$ |7 ^3 R/ M
            printf("输入的集合A是\n");& q4 m6 j$ r1 b3 O4 U
            puts(a);
    . K; r8 w" q( Y
    2 H- h3 y# w5 `/ N) l' N$ i        gets(b);2 c4 T- z& y% f# F! M) c9 v
            printf("输入的集合B是\n");
    % @' Y+ R, s$ k$ S        puts(b);8 z8 N: _6 V; y6 Y$ V! ]1 y

    1 p4 H) n8 N+ r& h! R% F        Union( a, b, c);
    7 v( L9 X( {, l/ ^9 W        printf("last得到集合C是\n");
    . ^3 B/ z! P% g; b4 e. i        puts(c);4 a. D) _, E; c+ x; A
            return 0;' ]! a% @- [: x! w& y
    }5 _2 K4 A4 i5 e

    1 U" e- O: i2 F2 |' l' D% Evoid Union(char a[],char b[],char c[])
    4 V) f* D$ B! e$ @{9 G# o# ~' N7 X8 }9 B* L' [# I
            int flag=1,t=0,i,j,m,n;
    + _7 z0 G* \4 ^5 k7 o. `0 z" d. x        m=L_length(b);
    ( V' {* r. Z0 g        n=L_length(a);  h7 N+ i2 a3 [  l; o+ o
            for(j=0;j<n;j++)0 `/ m0 u- ~3 n$ e$ V& ^8 o
            c[j]=a[j];
    3 g' {9 k* Z( V" x. x; K        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;0 j/ T) d( a% i+ Y# m7 X
                    {for(j=0;j<n;j++)
    . ?8 f( p+ C/ i' F4 K1 @/ r1 e                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了* t9 m+ N5 d* G9 x
                            if(flag) {  c[n+t]=b[i];t++        ;}
    % Z$ o6 D5 c8 V. O+ B                }6 x, T4 {3 @- K! V  B! g, t2 i
            c[n+t]='\0';
    2 m& O% y% b0 z( y) a6 H; [
    ! |" ?' e7 H; W0 q/ o2 D}
    / E7 H* O3 @- |5 T/ }( P" a# w0 Q0 w. x; v
    int L_length(char a[])  h5 I2 n5 h) u: G
    {
    # \: l9 m$ y6 N# D- j        int i,t=0;;! q3 [+ U3 k0 l( q
            for(i=0; a[i]!='\0';i++  )! W9 r3 f; L" P; K
                            t++;3 c8 g1 J) C$ ]" t4 \1 e/ m% s% [
            return t;% b/ m! d0 t* F9 i
    } $ N4 H6 M6 |) P0 f
    ( W% \; i  Z' {* C: F1 o, k9 S. n  w
    回复

    使用道具 举报

    慢跑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 编辑
    # D* Q: f0 d! V+ C/ X& r' f
    3 r* f+ t' Y, k3 B/ Q2 ]li2.1yong用指针:+ c: c5 R. _) c0 d7 A4 W, _
    ( q) a( C  P3 D; N
    #include "stdio.h"' R) C# ~* p9 j5 D3 Z, u2 q
    #include "string.h"% l" I% `" R  d1 ~/ f
    void Union(char *a,char *b,char *c)& Y1 X6 P  c/ |
    {
    3 I5 i- r% j+ Dchar *p=a;' V1 H% S( X* y
    char *q=b;
    8 J, G) `/ m& G4 @1 {char *r=c;% Y; R9 A. Q6 c8 ?+ U# ^, D
    while(*p) *r++=*p++;
    * R+ ^9 ^  l$ V- }p=a;4 j+ ]: [4 h; N4 r$ F, B
    for(  ;*q!=0 ; q++,p=a  )
    * p" O1 n! V* Q, Y) p2 H9 O{while(*p)
    7 y) |  O5 D% ]8 S+ u, u3 h; Qif(*q==*p){q++;p=a;}! ~- @9 m" z" H) g4 N
    else p++;/ W5 Z5 p0 h, S' o( g
    *r=*q;+ q5 |! W* V& u0 d" f' r  \
    r++;# J) a: A- ~; \+ k( _2 s9 Y
    }
    % Y# e! f) t0 ?: L*r=0;
    ' {: `" n3 t: t) Q8 w% A
    ) y8 S5 E' O( |, h}
    " g6 U8 t2 S; v) A" W) v; x% J+ m' j0 l# @
    int main(){3 h, u1 l. h, ]! c' O6 n0 `

    ! e* z! {* _0 qchar a[10];/ k% V% z6 z& ^
    char b[10];
    9 `: w1 C. R% H. ?/ }! x- ~char c[20];
    . k! b  ~# \6 e& Y: v) y% w" ]! Ngets(a);
    / T7 L, T2 P' Oprintf("输入的集合A是\n");
    / Y9 d3 u9 _3 m0 h1 @9 O$ Zputs(a);3 w3 T( Y+ K9 ~  E: w  ^2 D& r1 b
    . R) ]2 [  I- D- c7 l  G2 k5 p
    gets(b);- x, z  V2 F$ G
    printf("输入的集合B是\n");( Y0 U  A7 ~# f
    puts(b);
    - ?4 }' k* r0 o: M2 [
    & M- V; C* h/ w" _Union(a,b,c);
    9 V: o6 v3 f6 R: b! F  Hprintf("last得到集合C是\n");
    5 m% K% M; T2 b9 tputs(c);
    - Z4 N; ?1 X& k$ xreturn 0;0 b# ~1 X2 \) e. s2 p* D& W
    }# S& r: B& J  W4 v  A# u7 O
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    % o/ Q+ B9 x1 U' _! ^3 M0 H- P1 C#include<stdio.h>
    ( l- J2 i, S# {$ [' M6 G4 a
    ( g$ }  `" Q! e8 _% I  struct node
      u' k, V! [% g# G{
    2 j4 a2 j( ^% D: S        int data;
    : x& _) e/ ~" J: r# p3 J4 E8 z        struct node *next;1 ^  P. }: T8 p; X3 s, j
    };
    0 b1 C0 G2 A1 T8 Z- W. D//typedef struct node NODETYPE;1 H% I5 S8 ]! @8 x' N
    void main()+ k0 v) r+ J5 L0 L/ s7 F6 s$ G0 `. a
    {
    : x2 z$ p9 v% Z+ n: G+ @3 c% u# D        //NODETYPE6 J$ R: `4 X' u$ V0 f- A
            node a,b,c,*h,*p;
    $ ^9 c5 f1 c% f) @        a.data=10;b.data=20;c.data=30;- F) X3 b* V# K8 u
            h=&a;
    $ q9 p% e, J8 q6 `: M        a.next=&b;b.next=&c;c.next='\0';
      Y& j3 ~' s8 u2 u. e' Y        p=h;+ M' M* A' e7 A5 P4 r! ~( g& R
            while(p)9 f7 H$ g; A$ s7 r3 N( S
            {. f+ A) @; `9 d% s3 L/ M0 Z
                    printf("%d  ",p->data);2 ^+ f) [! ~3 G
                    p=p->next;
    9 m* z2 O' @% h        }
    , t1 U" t+ T! ^        printf("\n");4 S' m$ W7 w1 Z+ S( H2 {
    }
    ! f* A& S0 W3 ^1 n' C9 H& ~. B4 D7 ^1 q" R2 y6 n3 {8 q( B
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    0 g& G, ?) X. q#include<stdio.h>
    & t6 ]1 [- k' ?3 l) |- p#include<stdlib.h>
    9 P: z. G0 \# o) f9 i2 Jstruct slist4 {4 o0 [. T& H
    {1 b6 H0 U) I- h( S
            int data;8 N% o& g9 x2 i  c9 {
            struct slist *next;6 @' _6 I' l( a, @: F) d
    }; + j6 q' W" n4 V9 U$ D6 m
    typedef struct slist SLIST;/ _% z5 s4 K0 u; k0 u2 P) G
    SLIST *creat_slist1()2 J  K( w$ A8 t" T
    {) z$ E3 Z: A* ^8 H; u
            int c;& E0 R4 w: O7 D$ Z5 J
            SLIST *h,*s,*r;
    ! U" W- i  a- A) r% O* \  ]        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点# Q( s8 z# E: _
            r=h;
    * n7 c1 Z: g. m3 o2 x0 `1 Q        scanf("%d",&c);1 {+ |$ d, E5 F7 ~' Y9 D! g
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束4 `" s" L8 _# t5 d
            {! Z$ O1 l# ?9 l( o, t  t$ b
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点  d( H6 ~0 m- ^' ^, y
                    s->data=c;
    7 ^, C! z. W; r' `$ ?5 m1 m                r->next=s;
    & j' `4 W% j( f0 [% K$ T                r=s;0 a! J7 p1 Y" t/ q: }. s
                    scanf("%d",&c);: C/ n+ s  x. C! d
             
    " S4 J- @; S6 x- Y4 ^        }1 x+ I( c! ^: V- _9 D, v
            r->next ='\0';8 |+ ~' q, g6 _6 ]* {4 n/ o8 L
            return h;' u  d3 Z- C8 ^) b7 ]* m  K
    }' Q6 e1 _6 V. b$ q" I  q
    # p# {$ G- }. H
    /*: N2 G# s3 m; |% v/ u
    printf_list(&head). n1 ]- e  r$ H
    {        SLIST *h,*s,*r;* n( i# m7 y% k- i2 N1 w
            int c;
    " l/ d8 S0 j' D* m8 t; K* I        h=(SLIST *)malloc (sizeof(SLIST) );% E* [! s8 H1 ~3 D
            r=h;
    ' o+ ?5 n) C( B& D: g5 z0 @        s->data=c;
    # `; w& N% V: g; o        //scanf("%d",&c);$ g7 T5 m$ z; s) @4 h& s! E0 E/ K
            while (c!=-1)% h6 Y) D/ y8 I
            {
    ; M) L- e$ L* w$ b- J  |                printf("%d",c);) M7 Z( Z! U" a
                    s=(SLIST *)malloc(sizeof(SLIST) );. @' C& m: Q2 V4 ^# z. f  t
                    s->data=c;
    ' I  j, T- G( i; @' C                r->next=s;
    ; @, D2 l4 f+ d1 {+ F                r=s;7 R' R7 B! W! j# |
                    8 T( l& R' b) @1 g" b# d
             + @9 J4 |4 W0 N) T4 N5 z
            }
    : K1 K' i. h2 `        r->next ='\0';
    ! U& i0 ^+ y- f# H* T0 u        return h;4 J- E7 O* u: M
    }& d1 o) P7 s1 |% r1 U4 I/ {- t
    */  y, I; I; k3 c1 F( ^( S# [
    void main()
    - |  [, f2 g2 x; s- D: g{ SLIST *head;
    3 `! H8 J3 m9 _4 k9 n- z5 B( A
    / G# Q( j2 Z1 I4 C7 ohead=creat_slist1();                //调用链表建立函数,得到头结点地址- n% K' }$ N: |
    printf_list(head)3 A1 G' G5 A. w0 z" @9 S
    }
    8 M9 A8 ^: D6 }; A1 K* y4 e
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。3 F1 l; h) K7 g3 B9 k0 `$ J8 A
    ; e4 E5 q% w7 f: [6 |. @
    #include<stdio.h>
    / B$ v6 x0 O& u" k6 f) i* l% t #include<stdlib.h>5 B& E, Y" m  V( I, f; l% J! E- I
      V5 k' j6 c& g/ k, g. X
    struct slist
    * B8 ~/ T3 R) q( p  {
    ) {0 U5 {- o* I. z  int data;
    6 E! ^4 e: h4 ^: P5 F/ U  struct slist *next;: q( {; C3 k" G5 T4 e7 x
      };
    1 m0 M: u7 u! h6 n) E% A; i  typedef struct slist SLIST;
    7 e7 R, k( z& N) \0 p
    0 `( s4 `; j1 f$ I SLIST *creat_slist1()
    ' j5 [- ?  I* M$ i. V4 @% |  {* Y% p. P& e4 b2 `4 @/ l
      int c;
    + [  [0 r$ D5 y' T  SLIST *h,*s,*r;
    6 y3 l- O1 J' [6 t+ V# h  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    . x; [5 k* h- u3 zr=h;
    / V9 W8 I$ R3 L7 R  scanf("%d",&c);
    . b# j% W/ a4 y) _6 j+ W! Q  while (c!=-1) //当输入的c为-1时,代表输入结束
    ; {, k/ \- V) [! Y0 {. P7 M{
    " {. _- J0 u2 D5 S: i5 |, }* `s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    4 P1 ]" Q' D. W& t% Ss->data=c;
    % l5 k+ }& V* |( Z; t  r->next=s;. R3 p% \5 J; D! q' j
      r=s;
    ( ?& ?" v( ~3 ~. a' B: C' M  scanf("%d",&c);
    : C$ t/ ^0 c2 m+ v& {; Z7 c
    / m- s0 F! t" `' s* U3 i. q2 M" n}& V( l- b2 c- Y
      r->next ='\0';& n/ ]' \$ y) y4 |0 h6 _6 ~( C
      return h;
    # R$ a% t* H& g5 m/ K& j2 R$ {: j  }1 P0 q  ]4 j8 j7 l9 g1 @1 D
    $ `' B: ~( x0 I3 h# ]9 P
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    # j  ^2 I& A. k# Jint printf_list(SLIST *h)
    . m- ~( B% c2 T3 ?) ^- S4 Z6 v  {2 Z: L- k& n& D) X7 F
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚# u; Z6 _+ O% V( f* t$ z+ c
    while (h->next!=0 )/ O3 f7 w, K2 Q; |5 Q7 G. `
      {; ^! p, G! y' n6 A0 [5 o! _
      printf("%d\n",h->next->data );
    8 ]- C1 K8 m0 V4 e; k" v9 J" j" i  h=h->next ;
    * ?1 T% l  w+ W: n  }
    2 f7 ]% \) M) D; J  return 1;$ j+ e, k) z/ i4 a+ R' c& x. y
      }
    ( ^7 H0 g  p! w& l  /**/
    , L* z! H4 }6 ]0 [; P6 ~ void main()
    + J; `2 Z  F- W) F  { SLIST *head;- S  T, x) q6 V+ W0 C
    0 V$ D' r5 X  }, [5 \
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    ; F- H8 R3 a3 h4 B! g: l) G9 Wprintf_list(head);
    ! _% C6 f$ e  F  }! t9 q1 H, x9 {; I

    - b3 {" X6 D) J; U. F% H
    2 t3 v: Q# \* t& l  B& i# S* u" z此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 14:39 , Processed in 0.514946 second(s), 80 queries .

    回顶部