QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2359|回复: 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 编辑
    # Q" X$ a% ]/ m3 Z' W4 a1 l8 z+ s6 v/ @
    7 `0 O0 d4 J% A, X# x7 l6 ?计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。( K* u) J% h9 ^) p: r
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    - ~' c- M# X4 H: O; f, {; p/ C% Z
    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集合。
    3 M4 g; R6 a2 X  K4 T2 A这个代码是用数组的、算是比较简单的。4 h& Q! _; S! E8 Y$ e. W2 ]1 }

    & A4 v4 E. A5 n2 Z% k1 n3 X& y( s8 f2 l& m#include<stdio.h>& k* t; Y3 @/ M- x4 o" F  L
    int L_length(char []);
    ; R: O; z  `, `, pint main(){& S8 J* X7 }% P& g9 }
            void Union(char [],char [],char []);
    ; Z, G3 v: a8 g# |* T8 s; K- l) a! L# f
            char a[10];
    * t0 G# h# i3 s4 E        char b[10];& R, W. Y1 ?; Y
            char c[20];
    + ]  @, `1 g+ [( x8 F5 W        gets(a);
    ! T# j5 ?3 I  Y  Z" u        printf("输入的集合A是\n");
    , {' Z& b2 T7 d        puts(a);
    * c8 l' F& t: i" m% O2 \ . }' \( F* R6 C+ d1 b5 p) E
            gets(b);) _7 w" l/ p0 Z. k8 a* j) A
            printf("输入的集合B是\n");0 ]" g8 K) I# l* t" D: d
            puts(b);; ^. R4 p; M) P
    ( u1 b! V, u6 m" D5 G' e( E' q1 o; Y
            Union( a, b, c);
    8 E. H$ y; }3 W7 D        printf("last得到集合C是\n");
    & r% h% ]4 g4 m* ~9 a) ]        puts(c);. P0 ?, H) n9 r$ e' P+ A6 k
            return 0;5 x# ?" b* g& Z: [1 ]7 i
    }& P$ [) z( e/ x

    ! \1 f, w5 d( Z# M! w3 uvoid Union(char a[],char b[],char c[])
    9 p. A! `& C  E) U' ]) |{
    % J% f6 p& ~- Z& }- S+ b        int flag=1,t=0,i,j,m,n;8 W$ @3 a% V3 f" S0 C: _
            m=L_length(b);% Z- `/ k% D$ y. L/ j
            n=L_length(a);! t3 v" _3 M" h: P/ @; I! V
            for(j=0;j<n;j++)
    2 Z: d- r) L0 e        c[j]=a[j];8 z- {# y# X5 t8 W. z' a
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    ) O' b6 O" F: |- F, _                {for(j=0;j<n;j++)* o6 ^. q& t) ^- U/ u* K
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    4 l8 S' z  U$ Z7 p: P3 l                        if(flag) {  c[n+t]=b[i];t++        ;}
    8 v% l! }( n  d" u                }
    * c0 u. @0 D5 g        c[n+t]='\0';
    6 O4 t- j- C" t$ _! l/ C/ A  C8 q
    ' }; m3 L" X8 |}8 k( F& @* p! |6 t
    4 X! K, p) _( K3 n& e: o
    int L_length(char a[])
    9 ]- j3 m# u4 |{+ b  s6 l1 \  n' E  a4 b! C" [
            int i,t=0;;
    ; t6 \* D  z& B* m, O# t        for(i=0; a[i]!='\0';i++  )) ~3 ~% {7 a$ J
                            t++;
    * [+ m& H! P( L+ v; L4 ^  J        return t;
    1 e/ `3 N: J$ K9 Q" Y} ; ?! @1 m" j% ~0 V8 v: d
    7 N* N8 {* `' Q' q$ 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 编辑 & r" b+ ^7 Y9 `

    ' I* p* Z; a. Y9 @1 Dli2.1yong用指针:
    ' U. o: A0 @" F- l! n- [
    & D4 e1 P# |: m, Q7 Q' D#include "stdio.h"% m: U+ E9 k8 F" q# P# w
    #include "string.h"
    - z5 ^) s( G+ lvoid Union(char *a,char *b,char *c)
    9 c# Q* o/ U  d& |: k6 P{& U( w/ k9 e2 F& g  _# A0 v' |  l# C
    char *p=a;! T: `) S- s( I4 |  H& t: S- Q
    char *q=b;
    6 Q" K! A8 u% f* u3 P" uchar *r=c;
    - J, K4 S5 x5 w5 B6 Ywhile(*p) *r++=*p++;; T- b! \& W: R) v6 P
    p=a;4 w5 Y5 I9 J. Z# g! G( A7 I# C- m
    for(  ;*q!=0 ; q++,p=a  )
    + O. R) z' f! M# I. n{while(*p)7 Q) w) i$ t) h: @% B7 ]2 u9 Q
    if(*q==*p){q++;p=a;}% e  _+ C- w: O( Q1 r/ X- {
    else p++;
    / I# S# y; O6 I5 t& d& b2 w% a*r=*q;! _) ~5 E2 i4 r4 ~" h* \7 \
    r++;) e4 y# y/ D, [* c  P
    }6 `9 p) v. z5 O- z" L
    *r=0;' n2 g5 q# K. X- L/ [) o3 P; c+ {

    . R+ \7 C* i( |' P}" K" G' E1 j- r( `/ p% T' d% G8 t

    / c/ l$ a5 f8 i" D9 ?6 j1 Uint main(){
    4 a& M: F9 V9 M6 a1 q, E+ c8 {% z# A  O- y- k- {# ]
    char a[10];6 I! S' C- ~, e
    char b[10];
    ) d+ @( e9 v9 ~0 F6 c+ i' D9 kchar c[20];
    : w1 t5 ^9 [% C: bgets(a);
    8 x4 d' o! |; t( V; U4 _! Dprintf("输入的集合A是\n");
    2 p" \" X+ @( c9 sputs(a);3 w, N, H# b# W1 J1 R$ S& v* O
    . E) r! {* _+ Y
    gets(b);7 y; Q" t+ z8 a  e; U
    printf("输入的集合B是\n");
    ) A: d  G: `" k5 I  b; Pputs(b);
    1 [  }; ]( \8 |( R6 z! E7 J
    - r3 K: N: x7 O! x1 S( a( Z% ^+ n- LUnion(a,b,c);. W# y8 f; U4 v; l- N
    printf("last得到集合C是\n");8 ]; s& [' N' k4 m, i) l) J. b* N
    puts(c);
    5 c! U' E: S* P& Y) W: oreturn 0;+ X. X% I* ~* }
    }
    3 M) m( q- t4 Z: L2 O& n
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    6 d1 M, {$ S9 G/ q#include<stdio.h>" y: C. T: z0 Z. k7 Q

    ) p# x+ w3 N; m( R- x0 Y  struct node2 n5 y9 R5 ?# r# H* A3 o8 R
    {
    % c- z  C5 I) A' s; @* g        int data;
    ( |+ D- b: G3 t2 R9 z! M2 [1 J# M        struct node *next;
    " p; P& W4 d1 q. O# _: M};
    " ^" Q( |! @& g1 i, I( {. m5 N//typedef struct node NODETYPE;
    ) ~# t. @, T9 B4 p, [  _void main()
    & z* X+ D, C# `* y{$ w: X  g  {. n" q- C. n7 V" Q) @- u
            //NODETYPE
    : o: v( C0 s1 G" Z4 ?. R6 @5 y. w9 v, Q        node a,b,c,*h,*p;1 O7 r) |. D2 x& ^0 N2 [* [
            a.data=10;b.data=20;c.data=30;
    % f' @/ X; z; g* A8 B% c6 O        h=&a;
    7 N9 R, }, d/ X5 _7 E5 `6 v+ x# @/ ^        a.next=&b;b.next=&c;c.next='\0';* q+ K9 m# b+ r9 ~, z4 ]
            p=h;6 L% O5 u- p6 _" [" r% {' ^
            while(p)
    6 w$ N  z0 c6 ?7 j5 }/ P        {  @3 |" u" |/ I0 N0 j' @- A
                    printf("%d  ",p->data);
    ! u6 _0 N; e4 [( k1 p                p=p->next;
    7 M% ]  u9 B; J/ \: C  y        }* P2 X- Y  f* t) P
            printf("\n");$ e! m# \, z8 _9 Y& t1 k' I
    }
    : G  K+ ]6 Z: K+ {! z
    & l+ E( l1 q- n& ?- ?* F, ^, g这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    ' Y9 m/ Y9 f) I4 a, [  i#include<stdio.h>, m  k6 r3 J8 h8 \
    #include<stdlib.h>/ M2 T* V, T/ q$ n3 L+ K: o: y1 Y
    struct slist9 x+ w- g' C4 l8 F$ L! u: @# _+ d
    {
    ; S9 L" s$ P- g& E        int data;
    * i: \6 U/ n5 M! Z        struct slist *next;
    7 w# _; I, X) {: q, Q+ c}; ! G& u# |' m# |/ F$ M5 ]
    typedef struct slist SLIST;
    $ D. ?% t! O' c. MSLIST *creat_slist1()
    + F& }* }, k7 l+ }2 R& X{" r& q7 _* d+ A! v6 S7 D
            int c;) Q: B3 p0 O5 e/ p
            SLIST *h,*s,*r;
    * H7 u7 _3 ^1 n" J0 E( H6 `2 x        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    0 ]1 T0 z! Y0 @3 J. Y) M- o        r=h;
    ) m  V; j9 i1 ^( h( J6 O7 o2 \        scanf("%d",&c);4 \5 _: ]# V6 P; |# N4 \5 c
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    : `. K* c# Q3 V/ N5 w( ~; M        {6 n! s% T8 I3 q5 l6 G! T6 P
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    : S- X* M; y. j% D                s->data=c;6 ~$ D1 E* e, C  K
                    r->next=s;
    ) `4 Y% \7 o$ T1 P+ F) d; q' T2 A                r=s;5 X* Q6 l$ l5 ?- g$ K0 R
                    scanf("%d",&c);; C" K0 k, l8 F! Y" Z2 u' t" M
             
    ) L  n/ Z8 i/ G        }
    & @0 c& Q. y+ W9 O" ~        r->next ='\0';# i2 W- E1 Z1 M
            return h;% `+ T, _1 B% H" ^* h* M
    }
    8 r6 u! ^/ s9 n! P1 y! f& z+ b9 z- e8 h5 Z7 [# d) J
    /*
    6 a" j, V& x' f, Z$ a( n( Hprintf_list(&head)
    5 a1 X% S! Q. W1 n7 g; l! E{        SLIST *h,*s,*r;5 U1 b9 Y/ E8 q) ~0 z
            int c;
    1 n6 u- C3 z4 A. H; e& z        h=(SLIST *)malloc (sizeof(SLIST) );; J) b; A- a* X( W4 w: R! |" F3 o
            r=h;  q1 j8 `0 f/ d" p, P! A- f# j
            s->data=c;6 i+ A) q3 h! |5 v* G
            //scanf("%d",&c);& `3 a! C' j& [1 `* b2 E* g) h& h$ R
            while (c!=-1), S# T  u: d" _4 J' E! b& N# i
            {5 e6 j# Q, y, k
                    printf("%d",c);
    + u+ ]- Q2 Q  C% a                s=(SLIST *)malloc(sizeof(SLIST) );, P* M8 }$ J7 J2 Y3 O8 a$ u
                    s->data=c;# G4 a% j& R% ~- u- O) u
                    r->next=s;" i% s+ u+ \9 X5 I6 C9 ?0 q
                    r=s;
    . O, a, U) i, _               
    / r  |/ ^8 X8 }% s& V9 d7 n! ^         
    % e/ P1 h6 t* _5 H& T        }$ ?1 B, J7 l& P# v
            r->next ='\0';
    & z# Q, w) q/ v, S        return h;
    % v( V+ b* X5 z4 K6 `}
    1 t& W5 c3 d8 y*/
    0 Q7 X# h- g+ f! yvoid main(): v% X' D1 @7 o' c6 ~& _
    { SLIST *head;8 I( x; Q+ c1 U& e
    * O( s$ a2 |' G
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    7 ?, D3 H" B! g, ]. r0 pprintf_list(head)
    & _- s! `9 u8 b: G}8 R: _3 r6 Q' e! @! T
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    " ~4 T8 C: [9 X: t, q
    % o1 [; B5 n+ r& F" C#include<stdio.h>
    $ X- f/ f" s1 ?& C, I/ m #include<stdlib.h>
    0 g" b( Q% R1 J& U3 X5 S" z
    + c+ {  V! W6 m' u struct slist
    + B0 l+ J1 P) i3 z8 T5 Y. Z  {/ V+ M2 b' f  Y
      int data;" s* Z7 F3 L' w0 e7 p
      struct slist *next;2 P5 F4 z$ g) J) a0 ?- U" N
      };
    / ~' o3 g: |: x  }9 w3 [  typedef struct slist SLIST;4 ^0 ?  i/ @' z' [7 E# R

    ; @5 h. k+ h- N SLIST *creat_slist1()2 S- O& E1 _' s- ^, |& Z; u) W
      {* ~( a# W$ `. C3 Z, c) P8 N& O
      int c;
    6 {9 g" N0 f( V) W7 n9 i- V  SLIST *h,*s,*r;/ A( l% ?) J4 P, ~! Q' Z
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    7 V: ]% ], Z3 y( k+ X0 j! v/ z* lr=h;5 E+ q+ u+ F: r* q& z8 y" @
      scanf("%d",&c);4 u3 D0 w& X5 g3 M. b1 k$ ~
      while (c!=-1) //当输入的c为-1时,代表输入结束
    / M- r) e0 G3 d8 Q+ X  P5 w{
    8 i$ h- k1 ^" ~; ts=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    , V1 B! @2 G( {. {4 |4 ^  Fs->data=c;
    # P0 |( L0 p/ N  j. i9 U  r->next=s;/ l, c1 j* A% q) Y3 ?$ `
      r=s;
    ! c0 q" M0 x5 L# ^) W' Z0 w  scanf("%d",&c);
    : ~/ K3 D+ e% J( n" \
    2 i' G' Y, w# |9 ^, r- Z; Z}
    # B( i9 P$ F+ r# F) G; U) p) C0 X  r->next ='\0';* u8 n5 a3 P+ J! y$ z; ?" h+ D
      return h;
    % b5 n, }& ~7 x# H. z- @+ `5 f  }
    ; r" E, d: j& [6 m$ I3 Z - A6 i7 j; [1 r) k$ y9 s- i
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    - r. Q' h: Y% @4 d4 W+ m; xint printf_list(SLIST *h)
    % P- D7 j* U$ g. ?6 }  {3 l( ]; c6 ?- B
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚) X2 _0 x* e/ X! U/ |1 l" G* d
    while (h->next!=0 )3 N* ^% y4 \! @
      {8 U$ r, R+ {" S% d
      printf("%d\n",h->next->data );6 z1 y# o; ~' Z& c* s: B
      h=h->next ;
    ' r: ^' U2 J3 k) g! N9 _  }
    $ u% t6 M% \4 [0 B9 _5 u# e* |  return 1;
    ' v' b! E3 Y3 V  }
    % O& c4 f/ ]/ m/ R8 O1 f- X0 l1 k  /**/, e: Z% m6 ~; L' O% B# t5 S+ O
    void main()+ j/ T: M# S2 w; O6 G* G  \* y
      { SLIST *head;
    % y: V5 S( T0 v, p, w0 V" @, E
    / b" `! }  K  J- F% f5 phead=creat_slist1(); //调用链表建立函数,得到头结点地址
    # F/ W! \% E: [4 l" O3 L4 |printf_list(head);
    & q: T7 t0 x$ F% F# z) K  }( T" R+ o/ b9 J4 ]5 X# P

    0 v& J: n1 A7 g5 S% ?1 c& R: w& \* e4 b4 c5 n4 d
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 11:27 , Processed in 0.370989 second(s), 81 queries .

    回顶部