QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2412|回复: 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 编辑 : e0 O! J6 ?5 z8 u# H  P7 b

    8 k3 ]$ n6 ~; [0 s: i8 g计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
      ^2 \" B& h3 c4 G. G  \+ J刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    / B# l: H* E/ i  T8 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集合。
    ( b& J, c7 C8 e0 R- Q1 R这个代码是用数组的、算是比较简单的。1 F  v9 z9 s; y% [; T  |

    - U2 q; B) U2 H#include<stdio.h>
    ) E2 E: g2 P0 Y; ^! s( v( ?6 Mint L_length(char []);5 i& X/ h8 X* A3 F8 N
    int main(){
    & A4 B# ~  @; N6 B        void Union(char [],char [],char []);
    % b5 D1 a5 ]' g( a5 q8 t3 N5 D; C- T8 ~! ?, X1 w& u
            char a[10];* u# z1 a# w* x4 J
            char b[10];3 A% o4 F) }9 r0 V
            char c[20];
    7 C% C( i- h! {  [        gets(a);
    3 v  x1 G6 q. R+ v( N7 l# h& [        printf("输入的集合A是\n");8 a, z; D1 Q7 T- `/ ]1 q1 l
            puts(a);) U5 K# g( h* [) |. ~8 F

    ( W% S6 s3 ?1 w- N9 i4 L' F        gets(b);
    $ {) K' S& o1 T, T        printf("输入的集合B是\n");" x; a  p9 ^1 p/ X) e& N8 y; l# P
            puts(b);
    ) D8 f6 h" K- a) ~' F6 Q! @- I* Y/ _% w3 k! ^
            Union( a, b, c);( W1 I* |# N$ N* N
            printf("last得到集合C是\n");
    # ^& r0 X3 \" N3 p        puts(c);/ [, Z4 i+ e9 C! U) L
            return 0;
    $ x. d6 r0 t! H' n& L}
    4 y+ c2 z' P; }* I5 k4 e: o6 T$ R7 B8 N" T
    void Union(char a[],char b[],char c[])
    $ S0 D: @* U0 J8 Y{
    . Q- Z. L+ G# f9 }- i        int flag=1,t=0,i,j,m,n;; F+ @: J1 T7 J+ w3 N
            m=L_length(b);
    ! l4 O5 w# N# ?8 z2 R+ i, C        n=L_length(a);  a4 Q; y  ^% J7 Y6 A# R
            for(j=0;j<n;j++), R8 J' c4 p" `
            c[j]=a[j];
    * Z/ t3 g  w' y        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;+ `7 V7 D1 j+ E$ x4 j" f, u( K3 ?9 i
                    {for(j=0;j<n;j++)
    7 ~& k5 r9 w0 V) A2 S                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    2 f' ~+ t4 R& n6 \$ H+ ^0 P                        if(flag) {  c[n+t]=b[i];t++        ;}" U0 J& h! x7 p! o( c, _6 j
                    }: i- x$ E! ^" Z2 B) @+ g
            c[n+t]='\0';
    3 @) t- \5 g3 q2 a7 n. J, C 8 ^; e$ ^7 f6 y, J0 e% a6 D
    }
    ) H/ T- i' W# z. X4 M+ z8 D2 ^9 T- A  B* }% x
    int L_length(char a[])9 F/ s$ ~3 g! Y/ f1 h
    {% g3 X) E! e# e& ^$ u. ~% a5 l
            int i,t=0;;3 o: L2 j! p2 x$ Z5 [4 a
            for(i=0; a[i]!='\0';i++  )
    2 w: {1 A; Y& i; ?$ l                        t++;% i! O7 A. W  E1 r- a
            return t;+ j2 ^$ r/ B& S: E) n' M
    } ; |) d! D( b8 z1 q, o/ |. y; _

    0 V3 K2 T, M/ m  k5 x+ ?1 Z) b$ s
    回复

    使用道具 举报

    慢跑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 编辑
    # S  e+ y" `8 q* N0 Q7 a$ n$ t' M0 b+ T8 c7 ^
    li2.1yong用指针:
    , X4 w( Y7 _+ b; L; c7 i9 f
    : E2 s  [/ ~$ |1 x+ V2 ?#include "stdio.h"
    $ e1 L  Y% [* a#include "string.h"2 u5 V" |% e. w5 Y
    void Union(char *a,char *b,char *c)
    + j$ V% ]3 b2 h8 Y{
    $ D* E# ]7 ?0 h+ Lchar *p=a;8 w+ v% {) ^( J2 ^9 e
    char *q=b;" B8 S* M* {& Z% x. }$ N: i. c
    char *r=c;
    ( O5 m8 z3 h' N  E4 x, N, Rwhile(*p) *r++=*p++;7 p7 S1 g8 q) T' E3 U& }
    p=a;  |7 O! \0 Y7 n- o& o" Y! c
    for(  ;*q!=0 ; q++,p=a  )# F  ?4 \+ z0 R& J$ ^3 ]  Q
    {while(*p)
    * x, f% ~6 v& z: _if(*q==*p){q++;p=a;}2 A. Q; \) u0 W# v2 s1 Z
    else p++;+ J7 b' O$ ?, K3 F6 C) x
    *r=*q;1 A. p6 ]" f# t5 ^& _
    r++;
    . I) a1 V5 z# x8 R6 A9 J, l  A; _# S}
    5 g- P; w' z+ S$ \*r=0;7 z; w. a' B  N# J2 |1 u

    8 @& N& Q) K9 F, y( Q" R}$ s0 u$ ^* M* x7 C. @- v5 l, C
    ( R9 f6 K9 M7 H1 l8 e% Z1 g/ O
    int main(){7 z" w4 A: p! f4 m8 a

    % y% q6 B5 s  achar a[10];
    2 a; w8 u2 Y* g. l' Dchar b[10];
    3 a& j* _9 D* [; x% g8 J' Pchar c[20];
    ! F, o  T; F6 q5 d" E! ?4 \gets(a);) T# b7 I. W1 U
    printf("输入的集合A是\n");
    $ m. b) N& n. u" |puts(a);
    * c1 V$ W. e3 U! ?' r( K7 a
    # z+ L( ]& O; ]2 b* zgets(b);
    ' W# a5 T! m5 \printf("输入的集合B是\n");
    * [8 B- x) x0 m) x5 v5 B4 C& h* r! ~puts(b);1 R/ g& z9 x( w2 B7 u

    % K% r( a( c- u7 U; v( F/ f# k* _Union(a,b,c);, U$ c1 M/ o- {% f3 I
    printf("last得到集合C是\n");" P! R$ A( S% a. S6 e
    puts(c);
    5 S* e9 s- ]& Nreturn 0;: @0 J5 y; K- Y$ M: s& ~
    }* R  q- n5 }( M5 I/ D
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:3 l1 ?8 }5 y  b/ D) q5 r* \
    #include<stdio.h>6 Y, k( r8 T* a- b$ ^( ]9 `% K# Y
    & U$ W0 E! l' ?; J7 U1 l. W
      struct node: Z7 X* c8 i5 W) D
    {
    " }5 ~. N) O/ w0 y+ p8 K        int data;
    ) a6 x) F! M* R        struct node *next;+ o9 L& R5 X" y0 z
    };& p% _+ l9 p, B7 _; U" q
    //typedef struct node NODETYPE;5 o6 W- ]& P9 T$ S
    void main()3 D- W1 q4 G( q( s4 @4 X6 s7 v/ n/ q
    {, W* M5 {' C* n. A# y3 c8 r
            //NODETYPE
    0 A5 {: Q; _8 s1 N( g9 X; c7 T        node a,b,c,*h,*p;
    & v  b% ?! W& K/ ~# k* O, U3 @& |        a.data=10;b.data=20;c.data=30;
    / U7 u  ^  x9 g5 \        h=&a;4 r/ t; w; h+ M' O: j" T
            a.next=&b;b.next=&c;c.next='\0';* e1 r! ~! n8 P1 B2 [( m
            p=h;
    + r, p) U/ r( F2 v# n- |        while(p)9 P$ O: J, D6 b6 R+ Z2 C
            {
    & B- z" x( K$ g( s' f                printf("%d  ",p->data);' M  c: z) X. E+ ~* `0 h
                    p=p->next;
    + f2 q0 D8 M2 }        }
    8 Z+ \) q7 }9 |# \' M3 }        printf("\n");
    / ?# W0 O. B. `9 f' x}
    1 R  r2 {8 f6 m( H: o# L
    % k3 g$ s# o/ j- E; f2 M% \. P( k这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    , `# ~$ T! X. V# [- l0 D; w#include<stdio.h>
    ' ?0 F5 C7 P% _- h" O7 q( Y& |0 o#include<stdlib.h>
    - s2 N' H1 A) S+ f9 ustruct slist" j8 _7 H& |+ m9 B. l( i
    {
    1 [% f2 p& G( S. S        int data;
    : K- R+ z% f. b5 u8 m; E. y1 G0 K) W        struct slist *next;9 p8 P0 l( `: m% X! A, I7 S
    };
    3 F2 p3 S8 X! V$ `; l9 dtypedef struct slist SLIST;% Y: l1 C9 m* e5 c  Y
    SLIST *creat_slist1()
    + Z7 y8 K; G& K5 U1 x  C{
    # }4 _9 {) e/ s  X* w        int c;
    # O) g. c$ X- @# \9 Q" ^6 s        SLIST *h,*s,*r;
    - U: [/ k9 d9 X0 a0 E# C* B% s        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    7 \, E  m  m9 {$ t        r=h;
    , `& E, m: n- B- r( C        scanf("%d",&c);/ K: i9 x0 i1 |2 A. u  E
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    " o4 G! D* }+ E        {. M7 g( y* S% G6 l; o* X' u9 i$ D
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点, n9 j' K3 P$ O" L' ]6 G9 J6 ~5 O
                    s->data=c;
    - V6 O' r; p0 \; G& |6 }                r->next=s;
    - D) n$ N' {0 r" D* e2 \3 i                r=s;
    % L3 s8 D7 l( X/ V+ N1 ~                scanf("%d",&c);
    % j# F# ^. n0 Z/ Q5 H         # B: S0 O- `  r) i, p
            }
    " j2 M; f6 B8 d% m* P2 o$ X        r->next ='\0';
    ' J2 j0 @& j: {' @& e. [* R        return h;
    : R/ a2 S" ^$ c# |- h! H9 z1 m}
    . Y8 d$ M5 n- Q+ ?7 w/ l1 _' j% n7 Q6 U
    /*" G: A" r7 s$ G, h  F; C/ ?. o
    printf_list(&head)
    , k7 [' P( t. w{        SLIST *h,*s,*r;; n- }% b9 y( L' x1 j% _
            int c;& B* }8 K2 q  g7 |& a; Q
            h=(SLIST *)malloc (sizeof(SLIST) );
    3 g+ ~* C# A. F9 c$ ?+ t        r=h;. w: ?, t; C/ J9 G+ ]: `9 k
            s->data=c;* S. o3 M3 H# J7 P3 N' ]1 d9 g" _
            //scanf("%d",&c);
    ' ]! ]8 h; r* n        while (c!=-1)
    ) y9 ~1 \& }% B8 N        {' G7 X. l; V0 _  f- A! T- ?+ p# r
                    printf("%d",c);& e3 n5 D. q* _- ~3 E
                    s=(SLIST *)malloc(sizeof(SLIST) );
    $ U& o4 \, h2 v" G0 G$ Y/ A; j. B                s->data=c;
    # I& _3 U8 A0 O% m! s9 v                r->next=s;
    , ]6 f8 A0 w. e                r=s;( a9 Z8 w: k; k6 h
                      T! g8 M9 O1 v4 T" u3 B6 H) q
             
    * [( }$ ^2 {! g0 x) _        }
    3 J6 w$ o9 }" F8 q        r->next ='\0';! F5 @/ t: Q- j9 Y) o7 V. }
            return h;
    3 s# A+ x* x$ m+ j}) H& P1 t% f8 V2 J2 r( i  o
    */
    . f& |$ \8 m5 Gvoid main()3 g9 @- a+ W: T" D1 b3 [: m
    { SLIST *head;' H5 y8 }# r2 E) O
    ! v, G5 C% h! x0 e  U, ?( x
    head=creat_slist1();                //调用链表建立函数,得到头结点地址$ |% e* U- f& P+ ?; }: h8 Z
    printf_list(head)
    . B* j7 {: {" U. W}
    2 _5 X1 @' M7 z
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。1 d; S4 X: y8 |+ q

    2 i8 P: {8 h) _' @' B6 T- ?#include<stdio.h>0 B$ u4 z8 z' S$ w) k( ?
    #include<stdlib.h>
    , m- }* t* t# b' G " F7 ?/ x$ r9 A- f. X% V
    struct slist2 Y% P- \* R* W5 Q
      {
    . u/ S. a1 G3 `0 c  int data;
    ( J2 U  O( g8 w6 g8 L, o  struct slist *next;0 k7 `( U8 I9 w' }% u
      };8 w7 ^* ?' C% q) _" B) i! t
      typedef struct slist SLIST;
    4 K( i% \( U$ ~% ` % l/ `2 P8 e9 g+ T. r
    SLIST *creat_slist1()
    7 N* I% b5 `# Z6 n/ c+ w  {  {
    6 J3 y' `! U% I. d% N% A0 u; L  int c;
    , \1 H2 P& T2 O  SLIST *h,*s,*r;
    0 Z  O4 i+ I+ L  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点6 [( H% P: D2 I
    r=h;1 @( E: M& }: G
      scanf("%d",&c);% P- b  R7 x7 ]( d5 q) |  v
      while (c!=-1) //当输入的c为-1时,代表输入结束0 U; b% Y$ S  t7 i* {- e
    {
    7 z. f1 [6 }* i2 w, U9 ^( b+ I4 ss=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点) s( F0 m0 @+ x+ P/ w. t5 i% _4 E
    s->data=c;
    3 X; k( \4 l% b. X. g2 M  r->next=s;9 b7 V1 ]6 t+ X, A$ c
      r=s;
    & S. ?4 O0 N! Z+ G' u4 }  scanf("%d",&c);' G* [  J6 u, d2 `! ~8 P. V9 d% D
    ! z( A5 o2 o. `0 a8 P, |
    }; M8 ^  ~  \! j' s
      r->next ='\0';
      @$ K6 m) I6 W6 Z! L4 v  return h;. L: {/ e; x6 {1 e8 Z
      }1 S0 {5 N) ~; J' t) ^. ?2 a
    * \# J3 y9 o7 @& w1 i9 K  h3 B0 N
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?9 Z$ d5 L' H* b  a2 T; C+ {, ?3 S
    int printf_list(SLIST *h)
    7 ]8 k- X6 v4 `6 ?8 k& I; B  {
    2 d$ H; C, c/ f  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    , s  a+ ^( J. d* Z, W while (h->next!=0 ): h" f; @1 }( @3 a* B
      {* W' L  M9 x' N, Y2 F" m/ i
      printf("%d\n",h->next->data );
    8 I2 o8 }4 v  [  h=h->next ;
    % h3 G( V2 c! V$ x" ^  c. m  }
      {* h* A* \3 G( W! z  return 1;
    9 F2 K' t4 `$ d  }4 v9 G. ]5 H# O
      /**/
    # V' ~) l6 ?  I$ x) y void main()
    $ M3 S; d: _6 E1 A  { SLIST *head;
    / X# T7 m  X) x1 l: o% {) K/ g ( e9 X6 A: q- l( H* o
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    " t7 e0 G) c! y1 w9 P. \( Aprintf_list(head);; c( C  _  I  s+ L* E) M3 B: x
      }
    6 ~2 j7 K5 P/ H- e9 y* u' W$ \8 h6 T0 ]: A. o! t6 N0 e

    6 W9 X! |  f; v6 t: q此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-20 05:18 , Processed in 0.357862 second(s), 82 queries .

    回顶部