QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2362|回复: 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 编辑
    9 n! g' X# G9 j) V) p& [* Q# a. g* z6 c! V, B4 p
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。% ^. Z- U! M7 S, G; {8 i
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    9 b  a; O' s3 c% ~/ k6 [
    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集合。1 H0 x. T3 \4 a( h
    这个代码是用数组的、算是比较简单的。
    # O. L" w8 ]' t. P, b% ~
    # c" ~9 I8 i" ^9 Y3 \: z#include<stdio.h>. I4 Q* T8 D( f8 B+ c) h
    int L_length(char []);
    : [, c1 k+ C2 N' ^/ z' Vint main(){
    ; {% P& x. V/ k6 Y        void Union(char [],char [],char []);
    * ?# _6 _5 v, M7 o5 F
    7 L* [6 f0 v. S; D" v) }4 t( h        char a[10];
    6 m5 M# x9 F6 q) f3 d        char b[10];
    ) `9 ?  u/ A( n/ D( g2 Z- V/ R        char c[20];
    " d. ~" a8 {  |5 r! a+ [; e        gets(a);) |+ Q; f6 S3 f
            printf("输入的集合A是\n");, L" p: \1 P6 Z0 a
            puts(a);+ V+ |! k0 w, l0 v, Y

    $ V8 b5 D* I! X3 \% K! q. ^        gets(b);
    9 u7 h5 c5 b/ v8 E. _4 P3 k        printf("输入的集合B是\n");% L9 D9 ~/ o  U  b7 t; c: [: F
            puts(b);2 W: A- u1 |* v! g5 o8 a9 H8 e2 R
    , s5 Z# y& f* k7 ~& g* W6 V
            Union( a, b, c);0 M2 `, y" l* }( ?. X8 a
            printf("last得到集合C是\n");
    % o2 o( O: t/ e! A        puts(c);& \8 v/ z" I* a+ T
            return 0;
    & a3 V( @7 ]' j" |( j}
    7 G( h! ?# y+ j% B! Z* L2 ~! z1 t) @+ D# o& [, r, y% j
    void Union(char a[],char b[],char c[])
    " u: Z0 R. B0 O0 Y8 e5 z, E{4 [7 N* K) F9 `  h8 H0 c/ p
            int flag=1,t=0,i,j,m,n;
    5 X; {. O7 ^/ w8 p0 m/ U        m=L_length(b);$ @/ C! w/ T1 H( V: p
            n=L_length(a);
    ' q1 E- A+ e/ S" ]3 j: N        for(j=0;j<n;j++)6 b5 ]8 u: F( Z+ X2 Z, z" c8 a2 ~; u
            c[j]=a[j];# h+ {/ |% p( F/ G5 P
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;: t! E- d4 I( Z8 \3 t
                    {for(j=0;j<n;j++)# n& r* T/ E- B% Z' C
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    " z* C5 Y. X7 m; {$ w4 B                        if(flag) {  c[n+t]=b[i];t++        ;}
    : c0 |% n* s+ c2 L7 F# l                }
    # c/ j7 F8 V3 r        c[n+t]='\0';3 \) Z% Q% O4 Z: e
    + s$ k- \8 x7 v3 o% q
    }3 c* w  J; ?0 m/ O( s

    / ?/ Y+ h" ^$ X" A" Wint L_length(char a[])9 G# z$ e4 [6 |8 L" V/ D! w
    {
    ; X) Q5 @: @3 |        int i,t=0;;5 |0 `5 S& o* ]5 _5 e9 C
            for(i=0; a[i]!='\0';i++  )
    ; n2 H- |1 O" B1 l                        t++;0 i; t$ d1 d& u% t& s& a' R
            return t;6 Z; y8 n( v% A$ a+ C: M! f
    }
      c. N* D4 V0 e7 u, [+ O, E* A2 ^/ I& N; O3 i( 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 编辑
    8 U3 J. f. w' |6 i' T* b# s6 ?& _0 e& J8 F
    li2.1yong用指针:
    . z5 |" Z- y) n% ^
    1 y- d+ }! a9 n* b% l6 ?8 z; l#include "stdio.h"( [8 G5 q7 y6 k
    #include "string.h"2 m. r  b8 Q* l% i
    void Union(char *a,char *b,char *c)9 b+ Z9 G2 G7 S1 D# v
    {1 w$ F2 g# }8 f& B( R; b1 U
    char *p=a;
    % Z! k/ h) b1 {" r/ W6 E8 Lchar *q=b;
      t' A9 d. W  c! w; M/ Q- {char *r=c;
    ; h! J. f/ B+ Pwhile(*p) *r++=*p++;
    ( e- Y/ G# S  h6 {" p: V) dp=a;" x- i5 D; v1 a5 f7 `5 P& w8 r% k
    for(  ;*q!=0 ; q++,p=a  )+ T3 s: b4 ~( z# A5 a& F
    {while(*p)
    - W( o0 T& Y4 @9 P) z' uif(*q==*p){q++;p=a;}
    8 I5 }* [  \/ j; k' welse p++;2 X& |% ]; }6 T4 u2 m
    *r=*q;
    $ \: c, j0 {  k1 Yr++;4 k" `- R# P  n6 j+ [
    }
    8 G# G8 T/ L' i: i. z! v+ R0 I*r=0;9 h7 K# n; v% R, a

    $ C! W2 M2 M5 i- N. b( q1 T}
    ) L+ ?  O- @) [% |; d3 t7 D3 L
    / }3 I; f- o2 [- e5 O. dint main(){; m/ E( u/ U8 p
    5 D7 l$ p5 @6 K3 S  A
    char a[10];
    ; I: D& ?. a7 U& tchar b[10];
    2 y1 x; J1 H$ }5 n$ `char c[20];" W9 A1 v* V: p! x4 @
    gets(a);" w+ G" r! @2 R
    printf("输入的集合A是\n");2 D7 ?6 D, }; K1 f
    puts(a);
    & R" T2 i8 x; h! g" [
    + {) V7 M4 E8 m) k) egets(b);: Y1 Q7 J: b. a. p9 W+ Y1 q1 \
    printf("输入的集合B是\n");+ I  Z* U* u( `' p* v
    puts(b);: |& z; X! H, U5 m6 o6 \1 c: X# W

    3 z  d( r2 h$ ?& K- y3 lUnion(a,b,c);, b7 V4 \# j! V/ g1 P8 D
    printf("last得到集合C是\n");6 X" h- s- J! c9 S7 I# p
    puts(c);+ x4 i6 N7 s7 D% f/ x+ [+ e- N
    return 0;9 X/ |) C6 Z7 o, R8 r( u* j9 A
    }8 o/ X& V+ z# C
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:( V! l8 O6 E" S8 y2 i
    #include<stdio.h>
    $ _( F& o8 j3 \8 v1 q
    ( I; G: H; V; t+ @. ?6 X  struct node2 X8 ^' F: }4 ]! f, [3 {; {
    {
    " U% |  m6 w9 }8 e- h, ~  y        int data;
    : f2 w7 E( p* x$ @! t# |0 ~/ P        struct node *next;
    ( O8 Z1 A6 y( q* e};3 z  V# K' M( [3 A( L5 b! m
    //typedef struct node NODETYPE;
    ; k9 ?" i! r1 q+ J  Y% B' q. C( z& ~% n; |void main(), N9 m( u1 L& h! J
    {8 D7 J) V( N& G6 D6 C; `
            //NODETYPE
    ! C* |1 Q) D" }        node a,b,c,*h,*p;: N' v) x& Q" D  \
            a.data=10;b.data=20;c.data=30;# J! z; `( J. H! U& O
            h=&a;
    $ k+ v' _/ S& z: |+ b5 L# L" O2 _        a.next=&b;b.next=&c;c.next='\0';# Y, H1 `$ l/ L! ?7 `9 U7 b7 ]
            p=h;; w6 d6 T1 m9 }5 [" u1 C1 U
            while(p)
    3 h8 o: W  t+ x/ {- m5 z8 e        {
    , a7 U. z" d8 n: n- z, S# J& d                printf("%d  ",p->data);% r, q; ^6 E/ C
                    p=p->next;
    ( \  v% s9 y* B# j5 u        }
    8 G' z3 M0 u8 D5 ^9 J4 x        printf("\n");
    , @0 B7 \# M7 e}
    2 |% s1 B! m/ w. @  a6 S$ i+ m3 [4 O3 O) s( o  O! W# N- T
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    " r- l4 c- X" s( J5 ^; K/ b#include<stdio.h>! }# q. \/ P1 G3 N% G7 \9 A/ t- H
    #include<stdlib.h>2 H! P# j  o. L" j0 R0 j; t
    struct slist
    0 z4 y& |: u: Z" `{
    % l. y3 R; l; P1 a& h, r        int data;
    7 d8 Q" t2 W3 K/ p        struct slist *next;
    ! W& Y4 @4 B3 ^  M- m) K# x}; 2 ?2 N2 u7 h0 y2 o6 b+ i" Z
    typedef struct slist SLIST;
    ! b/ ?( k2 u7 t* USLIST *creat_slist1()
    2 C+ \9 V) D" I  A, F' c7 U{5 o* P; c- a$ ?
            int c;( j# i  v9 t' B' x8 T- U
            SLIST *h,*s,*r;4 M# U/ _; Y, x$ J" W  N
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    : b* l0 b  P- e4 ~0 P, }" q        r=h;  ?! B1 g3 K* `. N" g5 [+ [
            scanf("%d",&c);
    2 D% m  Q3 {% \6 p+ N/ A        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    5 H4 Y6 r3 t8 _- V5 t; D        {
    4 _# |5 T5 x- ?* _5 H                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    : U6 A% o0 F0 q                s->data=c;
    1 W$ z' p% a6 u% e; }0 D                r->next=s;4 Q, E9 G: Q( i, n2 Z) `
                    r=s;
    " E1 ?6 t2 S& ?8 k) H                scanf("%d",&c);
    1 O) g" o& |- w6 I  `6 s! `! Z         
    - U: o: [4 Q  c  `( l& E        }
    $ h+ ^9 g% C& o" ?        r->next ='\0';
    $ h, L) i1 B% x( [/ @( [        return h;
    * u  ^- F$ J: _# d9 [& Q}
    ! J6 z; U- Y2 [0 W( F
    ; {( c3 w! ]6 b3 [& V/*8 m* M+ w8 I6 c- H: K
    printf_list(&head)
    ! i5 A) ]8 X7 I- F{        SLIST *h,*s,*r;
    % p2 V) _* O8 J( d% X' j/ J        int c;
    & x5 I: c/ Q5 {" @2 g5 p) e        h=(SLIST *)malloc (sizeof(SLIST) );
    , D1 S, O7 E! ?0 s& Y; J. `! k/ d# A        r=h;' ?) w. H6 Z- Y0 h, ^4 L
            s->data=c;7 G( v- B# v! J" M. D0 D# D
            //scanf("%d",&c);
    # J3 v& B2 |6 d( o/ Y, n, @9 x: O5 u        while (c!=-1)3 x% U/ q1 F2 n2 s) J
            {$ m. y7 N8 a' Z+ N% f" A  P: b/ e, y
                    printf("%d",c);
    . Z* G/ H5 c9 Z5 D6 O1 W! \                s=(SLIST *)malloc(sizeof(SLIST) );
    8 Z; j- d2 L5 [6 Y6 l) G, l% ]2 }' l                s->data=c;, {$ \) j) A* S* X- k+ F/ ~
                    r->next=s;
    , L5 y5 L3 z4 e- ^) V                r=s;8 S  e2 x: t. F% R3 S, O/ f/ F
                    " a9 m- n+ t9 {& b. V) g% z" w9 T& j
             
    % j0 V( f* d& l        }- v; j/ @, F, H6 K& D5 E/ p
            r->next ='\0';
    ' A$ N, P/ ?6 a, P- x* [" j$ o        return h;# Q$ B8 \/ I' g6 \! N# X* _
    }, M/ ~" }7 E2 N: A$ y3 o
    */7 Z' ^# U3 `5 @& i1 J9 l" Q: [- q
    void main()
    * w! A9 Y- H3 \4 l- U" g* q{ SLIST *head;; j( [, u8 C/ i0 q8 ^( }2 p9 V

    8 y( Z0 Z; c. b( \. `' nhead=creat_slist1();                //调用链表建立函数,得到头结点地址, z$ y: u! j$ C( `& e  L- e/ `" f
    printf_list(head)0 }4 r# W5 I& Y' M1 X
    }6 E/ Q0 D4 v! U+ ~* X
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    2 _4 G# r% w- T3 G$ }& O0 Z2 p& F1 B/ u- V" X4 O# D6 {6 x  Z
    #include<stdio.h>
    " E0 |5 J& q5 ]% o* L #include<stdlib.h>: E; V- Q& p: m: g: P8 r' ]

    " u  v. G4 {) q$ t! N struct slist: g' g! D9 e( V, d
      {* [4 t! G9 D- I
      int data;
    0 D: P  r# v) i+ `. U  struct slist *next;
    % g, L5 h/ h8 }6 j- f2 G9 M  };
    6 l9 L& r* n- V" G2 y  typedef struct slist SLIST;
    # Z. c4 V3 e: b: H/ ]# a - T9 P5 y1 V* N7 d
    SLIST *creat_slist1()
    7 e7 _' I8 W" j3 [/ r) J* q  {
    , D$ x: T. @( p) K: e7 d  int c;
    - u4 ^# q% V8 ~/ _0 m( ?  SLIST *h,*s,*r;
    3 v8 H! x  h! b0 s3 @  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点& T6 G3 L# p2 Q+ q6 }! k: F
    r=h;! Y+ [, H& m. q+ U* w, P
      scanf("%d",&c);
    1 A. \0 L, V+ x* u" ]  while (c!=-1) //当输入的c为-1时,代表输入结束
    ! G* [' E5 D/ v# Z6 w0 S6 X* u{
    7 V6 K7 m* f1 @% D7 ks=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点- a1 d9 O1 w7 L( e3 b' F/ X
    s->data=c;9 t5 D( a6 V4 A* T
      r->next=s;
    4 l- L5 E& E5 B  T: Q( l3 D$ o  r=s;( o( t/ e/ [: i7 K
      scanf("%d",&c);
    6 ]. ]' n4 A# |4 j
    9 H: @6 o0 p7 b% C- \% K}
    : Z( E$ E% B* ^1 X' [$ T, V1 M: j6 D  r->next ='\0';
    ) c6 y/ U( d3 B& g4 M  return h;# I! X* r8 L# h$ Z' s8 v% C
      }
    . W9 X1 m1 l3 C8 ?6 i/ H 4 |- J% q9 ^8 M/ G4 h, C* ~
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?) ~# V# A2 t6 T
    int printf_list(SLIST *h)
    - `) W4 o2 ^+ x  `  {
    6 ^2 {' @6 g3 _. F6 S  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚# U% L% d5 o  J! A+ l5 x7 j: {  p
    while (h->next!=0 )# F: S, O" \4 u) U* h' Z/ p3 s
      {; F) R) Y7 I2 C! w, W, w
      printf("%d\n",h->next->data );5 C  \( c" ]. }7 j/ a* Q
      h=h->next ;  Q; z: B: s, E) _% G5 _5 W" M
      }
    8 N( j8 Q) t% R! A: w( a  return 1;
    , J8 D( p" Y/ z3 Y6 N: @  }) I# \  z& j8 f' A" F! p$ M
      /**/6 }$ W7 }& Y* {4 p
    void main()
    : W0 C$ x2 m6 i. V+ x  { SLIST *head;
    ; x) O0 u5 s8 k! F* ^3 d  L" g
    $ v5 f" L% }! ]' u3 P5 ]+ E0 N% f6 d8 thead=creat_slist1(); //调用链表建立函数,得到头结点地址  q! N: n- a2 p
    printf_list(head);$ Z. Q$ j5 g( t2 N- n
      }
    ( X! Y" ^6 o/ M! {5 r' S1 \
    ( F* c2 V. T8 ^" o; f# E( \6 Y% L/ h9 Q$ b7 F- _5 [) j( D
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 13:20 , Processed in 0.468553 second(s), 81 queries .

    回顶部