QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2520|回复: 7
打印 上一主题 下一主题

数据结构,清华 严蔚敏,例题代码(自己写的,持续更新中)

[复制链接]
字体大小: 正常 放大
慢跑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, M( E% R( K6 K) s& [# t
      \) _/ J/ _8 N
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    7 z+ f  G  t/ d% Q4 B, A3 \  S刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。* A4 m4 I. m/ T
    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集合。
    * n2 |& H9 {( B  P, O2 w这个代码是用数组的、算是比较简单的。' q4 t& u$ d5 G, O& o" T& d: B

    # a+ Z9 [( y! H#include<stdio.h>
    . _7 x( M1 P1 v$ R, t8 ~  j2 ?int L_length(char []);3 M' ]4 {" k1 l7 A
    int main(){
    . ]. x: Q7 Q. a9 ?! N) K* ~) m        void Union(char [],char [],char []);
    1 Y0 d4 F8 X( L* u, ^+ r$ o# I4 y; [& |. j2 @. ?2 b3 S2 x4 M
            char a[10];
    $ Y( |1 q6 }) u; ?6 E4 h        char b[10];
    ; O4 c: X7 k3 x* N- d& n        char c[20];
    ! W# }0 _6 \4 ~        gets(a);
    : Q& x7 ^+ ~# ~        printf("输入的集合A是\n");6 g( T- w9 A2 Q' W: z: g  |
            puts(a);% S- b. ~( x! F: i* t. D; u

    9 e2 j& c2 x4 t6 ^        gets(b);
      D' n) _$ r7 T$ d        printf("输入的集合B是\n");, b2 `' ]6 A2 M6 F# p* |, E3 b
            puts(b);
    0 v' o$ q  g8 |, M5 N1 y
    1 T+ i4 b+ f9 }2 }0 ]        Union( a, b, c);9 h- D" ^0 z8 d: }) Z+ g6 g
            printf("last得到集合C是\n");: _# ?: Y% I: E! e
            puts(c);
    % \" s+ J$ z1 Q3 k        return 0;
    3 G4 G9 Q: z& x! u: C! F. p}
    ' o* q8 C9 f$ s# i9 N, [9 O6 ]/ v. k" ?" A( h' i) l
    void Union(char a[],char b[],char c[])$ `  D; E% ^$ G1 ~( v
    {
    ( U' M  T5 T" f2 d& u        int flag=1,t=0,i,j,m,n;: v$ l6 ~& D  G% `  ~" u, b" |6 d
            m=L_length(b);
    + y& }/ t5 g; C, B' r9 |7 I' M        n=L_length(a);4 n2 [3 A3 d5 L5 ?4 f- {) Y
            for(j=0;j<n;j++)
    : X1 d$ R% R' j) L' b        c[j]=a[j];
    9 s8 @* H, n0 U1 @        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;0 ]. l/ p' z3 `2 ?
                    {for(j=0;j<n;j++), ]; H/ `5 J; l2 K. {4 Y: k( A
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    , c7 ]; C8 t( q4 n& z1 o( M. ]3 O                        if(flag) {  c[n+t]=b[i];t++        ;}
    4 A4 G4 U/ r8 k) N) s, h                }) P2 E( q9 M+ r7 V6 E" e
            c[n+t]='\0';
    8 E8 Q4 e8 ~, T2 M' U1 o 0 v2 k# Z; R0 e# T4 b9 h2 {! k: s! Z
    }
      S# x# L) E# ?9 Y
    0 o* @3 d1 {! g- ]* L  i( E1 w/ v* f9 }int L_length(char a[])
    " M9 f/ U  ]$ l: J& G9 P{1 O6 T2 g. i1 J* U8 N! t. {
            int i,t=0;;
    . R) S' S/ A, ^- P; X) }$ q        for(i=0; a[i]!='\0';i++  )& g; F$ L, {+ P0 ]# o7 l9 y
                            t++;
    4 E9 Y) g0 {/ b' L# q        return t;
    9 C6 z1 O  N& B) o: ]9 O}
    4 _) b1 n7 O4 }% E
    0 p1 `  E. B; q
    回复

    使用道具 举报

    慢跑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 编辑
    ' [9 {9 S2 ]% v& y: ^  C
    - t7 T2 x) m: h) @+ X! Lli2.1yong用指针:, y9 ~# k; R& H/ b: C' `8 U% @
    3 n3 [. x7 q3 Y% e) j
    #include "stdio.h") R- _0 x4 h1 X
    #include "string.h"
    " M1 A. @' R" lvoid Union(char *a,char *b,char *c), e8 H2 j) S. _
    {
    6 c" G! L0 \0 L6 g* F7 |" cchar *p=a;
    ; p/ U4 j" ~. O! W5 {7 ?* b0 Cchar *q=b;
    % P. U, ~9 D! u# P* s3 g) z: Gchar *r=c;' `$ @( ~. n; u) l
    while(*p) *r++=*p++;
    # u3 z* H  w8 G- N/ B% qp=a;
    , M3 Y( e5 E. r$ {# `8 n- l+ Jfor(  ;*q!=0 ; q++,p=a  )
    - p% O$ {. N; N{while(*p)
    5 g! e) g' i5 o* aif(*q==*p){q++;p=a;}/ `/ g  q- |+ }+ B) c% d* b
    else p++;8 x" A* L9 X! S+ q7 Y
    *r=*q;
    ( ?: K9 X3 f7 D9 ~5 w; d1 S+ Tr++;" r$ ~! u; P  j
    }
    4 G% C5 V8 E' a; Z( H*r=0;
    3 d. B  V3 |8 ]) s) u& I- i  m. C  G  ~' M
    }3 @; S6 ?9 i: |, {
    " f& o) v$ r; J. C1 P4 m
    int main(){% X$ o/ h  M+ ]! z6 L$ M) {2 e

    ! E& d# d) V* b4 Z; dchar a[10];' B5 q2 B" @" p8 q4 {
    char b[10];+ K2 l# k3 Q6 d1 K0 p
    char c[20];
    8 e7 O1 n. w8 |6 a( N+ ~: Tgets(a);
    * b; t& e/ @  Y" B9 v' rprintf("输入的集合A是\n");
    & \0 [- ?# U: |7 ^0 q1 m* aputs(a);- `( ~4 ]; ], ]4 m% D

    & w' Z  C9 e" j. P% D' Bgets(b);
    ! J0 T5 x7 R/ Y0 ?+ `printf("输入的集合B是\n");
    # ]) a0 [$ e) e6 `! ~! L4 N1 eputs(b);
    , U3 [$ f- ]; e' z$ L( y6 K) d5 D- g1 h) _7 f7 k5 X
    Union(a,b,c);+ `- ^" m3 v2 _% P1 E- A
    printf("last得到集合C是\n");
    ! T& |3 }, ?8 @9 oputs(c);) P$ e2 j- g! C" {" {) j
    return 0;
    8 r  {4 p8 P; t! H, [4 K}: g. B- s4 D( l
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    3 B% |* `8 A" l: v$ M# T% c. l& _#include<stdio.h>6 \8 F. |: E1 U3 ]) f
    ; e0 y$ K6 b% G. \( p
      struct node
    ! s% m$ J4 a% y) U2 u{. N+ x5 }( H7 u* B+ h
            int data;& t: U8 d. f' h( s4 y; Q) {
            struct node *next;/ k: O* E$ A8 Z, p& n% u
    };
      p6 w" z9 G4 Y1 M5 g7 k//typedef struct node NODETYPE;8 L9 |' c$ u# w) X
    void main()
    - T% x3 [5 P$ K{9 j' \8 C( E# {
            //NODETYPE
    7 B" z/ t" r1 }/ ^& v2 P1 Z! Y        node a,b,c,*h,*p;
    $ S0 p. z) D4 h3 K! |. S        a.data=10;b.data=20;c.data=30;! o$ p5 t- m2 x. O! R0 y+ Q  k) s
            h=&a;/ a# Z) \$ m8 m& d7 J: X
            a.next=&b;b.next=&c;c.next='\0';: C+ B9 I6 f2 t0 p3 w: k
            p=h;
    4 d. G8 y) W3 \: J        while(p)5 A( R7 `7 V( j3 I
            {
    : l$ X& ^$ @; ]4 h. v0 ?                printf("%d  ",p->data);
    " q& J5 s  P" `$ e2 N) L6 e1 O9 f                p=p->next;1 f3 ?- i, D+ e' ~0 _) T: P
            }9 A2 X( x1 S) W, W: r, k
            printf("\n");& s8 Q/ d6 j& c6 \( ^3 R+ E
    }1 m- P- m% L) w" F

    # }) {# d. P7 E' I' p这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    此代码为生成一个链表的代码:* D+ Y* ]+ j0 X$ g
    #include<stdio.h>
      B2 y/ [$ e( q$ }2 I, o+ e#include<stdlib.h>6 N/ Y6 P* k" s- ~
    struct slist
    5 r) i* H9 ?, y; ?$ g. s! V/ a9 Z{/ e* `% p" Z3 i5 W; S+ k
            int data;  j" L0 e0 u8 d: M) j
            struct slist *next;6 E" Z; e( ^8 U6 y
    }; : U% v# e% |7 S+ ~7 @
    typedef struct slist SLIST;
    / ~, J" w4 e2 @SLIST *creat_slist1()% h" d/ g! ]/ r: F6 D' P" A: g
    {
    * }* K+ A' [$ u8 \: x7 K/ h        int c;
    6 _: a2 L) r" A1 W6 q3 k# r        SLIST *h,*s,*r;2 @' J! Q- u' E4 c& [% @0 f" r
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点. t3 f# d* s3 i, e4 q; g
            r=h;
    5 J2 m  o7 K: o. F        scanf("%d",&c);
    ) Q; L4 Y$ |4 K8 d  X1 ?        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    * ?3 @% O5 e; D; n2 X9 Z* O% ^        {
    5 L% E7 U* p: s! m, Y+ o* ]                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    ! J8 {/ q8 B# \0 y/ Q                s->data=c;
    2 B) r% a, w% r0 y                r->next=s;3 Z2 W' s6 o) H2 r* Q. D3 D5 `
                    r=s;; E' G5 r* k- S  z) A, U$ P$ a1 Y
                    scanf("%d",&c);! w* f$ {, S" v4 q: f, s
             6 z+ B/ `1 S( B
            }; h5 H' w6 ^% l
            r->next ='\0';
      j; e  g* |3 [7 o        return h;" r) f# h2 T/ f. A# u+ `
    }% s2 l% X+ O& e, L/ u5 l% e2 w
    ; P+ k( O9 b: c4 t9 o
    /*- y& \' I; R+ f  o* @% e- b
    printf_list(&head)
    + d7 D$ c! E6 u& b{        SLIST *h,*s,*r;& g- r! z% o! M+ V
            int c;9 M% s$ K3 d, K, w4 _+ {
            h=(SLIST *)malloc (sizeof(SLIST) );
    0 D# R; ^) s8 }' ?) U' U9 {9 F        r=h;) _0 y# i1 p6 I! a
            s->data=c;
    - C& o& z0 L$ o& v$ [; _: V' G  [        //scanf("%d",&c);
    8 C4 s3 B' ^: s  E        while (c!=-1)
    # q( d# W8 W% c  Z5 Z) s8 d6 d        {  ?7 E- W) c9 V, O5 o2 y1 c
                    printf("%d",c);
    1 g, T; P' f3 |; o3 c8 W9 f                s=(SLIST *)malloc(sizeof(SLIST) );
    1 c1 t9 B  E9 O0 P                s->data=c;% U7 v8 l8 {0 A) M
                    r->next=s;0 S4 _( G9 G$ g& \; ^
                    r=s;) g7 f& g' \: h; l6 b
                    8 O% N  {: Z0 {) ~4 n' N
             
    2 i8 B4 [) U, g# b        }$ [- k- @/ T# n$ r
            r->next ='\0';
    ) \, V+ B% a5 n8 ]& \( H: V        return h;
    - z. B/ \% x, w+ ?" l}
    ; y3 O4 E5 P- P$ V) g" [*/
    ; |1 |1 `& v) B, c( tvoid main()- z$ k, g; X. |6 `
    { SLIST *head;2 p4 V! u' O$ k0 t& c8 z) O

    $ n+ Z9 ~9 |. w! u$ t" }2 ]head=creat_slist1();                //调用链表建立函数,得到头结点地址3 O! n7 X3 A. o6 d* F! N4 ^9 T
    printf_list(head)
    3 N% X, _1 N" h# p}
    ! |6 z+ p1 Q" ?% e' \( @
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。7 H% C) @% A; |/ Z# n" M; R
    $ y6 ]- R! u; }2 q( R- n& W
    #include<stdio.h>6 L+ R2 g7 k* t8 B9 P
    #include<stdlib.h>
    $ T) ^) [4 U- E2 E2 J # Z, k$ V+ ]9 T3 s) V+ s
    struct slist
    6 l; O( ~& i7 ^  {
    1 q; l0 P! o$ d. x  int data;
    ' U" s1 d, J% g/ R  struct slist *next;
    5 g- g4 w5 M5 _2 ]$ X+ v- j  };
    8 Q9 b6 i! e* u+ r  typedef struct slist SLIST;  m3 t( A+ ]& K
    ! q! w6 M" F. b" G& U2 o
    SLIST *creat_slist1(). I) c4 ]% O: a& d
      {
    9 `# E" C" j5 b$ Y1 m4 ~  int c;- i* ^) |+ Z3 n! U( T
      SLIST *h,*s,*r;
    % Y, w+ K. P. q. p4 _  y  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点* F5 {( Q# g+ H, ~- C
    r=h;% {) C6 g5 r' P
      scanf("%d",&c);
    * ~9 l- ]' g# v) Y& C/ N1 E  while (c!=-1) //当输入的c为-1时,代表输入结束( o) I% I2 {' k+ ?. g3 j
    {0 s4 b  |; c) ^& H, p
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    ' [3 |5 i! B3 L0 a& Qs->data=c;
      E. _4 k2 J8 \, x# G& _, N/ ^( v  r->next=s;
    7 Y9 a. z' N. \, O. e, C1 H# {  |  r=s;
    * w; X# r% t6 X; y4 m7 E" V/ t  scanf("%d",&c);. a" m3 y, u, E# A$ e) _$ ?5 @# t; ]
    " g. H: m) B* j, ]. c
    }
    # ?( {& `! j; G+ F3 ^  r->next ='\0';$ w& P) Q: [1 j7 j% J
      return h;
    ) Q0 O/ W* U& D+ A; h  }
    & \8 |8 p: V' }1 S5 W9 B
      N% N) U% @0 N' m9 x/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?( _) o+ M% Z0 b$ @, N
    int printf_list(SLIST *h), h  t7 t* P7 k5 t6 e  D( U
      {
    ' z' F6 n$ C* R; {0 I+ ^  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    4 _& M" c1 @& F, ^' K while (h->next!=0 )
    & o% |& Z4 j1 B7 [6 _4 ?- t  {
    $ G& R+ x3 v9 r  m8 z3 P  printf("%d\n",h->next->data );4 }. i+ q1 n% ^0 A4 X
      h=h->next ;* o$ U" l, D3 w& G; x
      }2 x1 W. r7 @. [2 T) G! E
      return 1;
    8 Z' B7 [- o4 J( R" @* L  }
    * X8 c7 e- l4 A8 s" r  /**/; {, _/ C  H$ z
    void main()' J1 c8 H+ v8 ]$ J5 G( ?0 v
      { SLIST *head;
    1 S# i4 ]. L/ y4 @0 @ / P9 E2 f& `$ g) m8 u- V; F9 x
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    # q! f: w6 r6 T) s8 Pprintf_list(head);
    ' l+ c% {$ M+ Z9 G  }
    , i$ h' z: N' }1 F
    1 d+ ^/ c& V9 `
      p8 I7 C. l# b. \7 e' K2 V* P4 v此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    8#
    无效楼层,该帖已经被删除
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-15 08:56 , Processed in 0.418836 second(s), 89 queries .

    回顶部