QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2058|回复: 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 编辑
    5 W  I* O- j# h) d$ R" h% [8 x( x( U/ R1 d, S% ]
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    ( t* _- B' X# `& G- y7 I刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    & X1 f2 ?% f0 e0 S) v8 \9 j( g8 b
    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集合。2 a; R5 `; \, s
    这个代码是用数组的、算是比较简单的。, W* |, k4 l+ K9 Q7 @
    ; w" t/ {0 T' m" L3 f! k
    #include<stdio.h># V$ Q! P  d* s  |: M# S5 k
    int L_length(char []);4 t* \1 _! Q* {( L& s
    int main(){
    % \3 T" f: |; c2 e  _$ z5 f) ]        void Union(char [],char [],char []);
    5 i* [9 y) f- q
    , q" t' i! V5 X2 {& l4 ^        char a[10];1 ~3 g, I& m6 s
            char b[10];: \5 O2 y) ~; {7 o
            char c[20];4 r/ S" |( J$ q: R3 H
            gets(a);
    5 ]7 ^. B, m, f        printf("输入的集合A是\n");
    : b# s/ D! F: g* a        puts(a);
    5 p2 k. i$ M- J/ U6 H
    2 @. c3 \" t5 y( s        gets(b);
    ; v# }- L# B) D3 g0 y/ J7 f        printf("输入的集合B是\n");
    0 S; f! Q$ z  v* u! G- }        puts(b);
    2 U( \  M0 |% N7 M7 q3 \- }  \+ ?5 o+ O; _
            Union( a, b, c);
    / i1 ~! {4 \: K2 o# S2 V7 A        printf("last得到集合C是\n");7 Q) ^2 o8 p: Y! z% O- ?
            puts(c);
    1 D6 ~5 S; b% c8 i: ?; V% |        return 0;' r% f# D6 B6 T/ M  R
    }
    0 s0 N8 E& [5 p5 v1 l3 u5 t) E
    ( w7 ~1 J; \2 Cvoid Union(char a[],char b[],char c[])' {( e! M0 W0 ^# U* S2 O( w" {
    {
    - w4 O- e4 f) u; a4 F/ h7 ~5 ~        int flag=1,t=0,i,j,m,n;
    # u) k3 c: q( o9 _        m=L_length(b);
    ( N, a6 o- I5 N2 Y# t# h' h  \0 m$ k2 y        n=L_length(a);
    : X8 ~& ?' D7 D( Y        for(j=0;j<n;j++)
    * e: E" |1 w& a% G" `$ R        c[j]=a[j];( ?% a0 C  N6 D( h
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;) T1 N, P% H3 a4 g# {* ?' B7 ]) h% B
                    {for(j=0;j<n;j++)3 d5 B& }7 n: ~! s7 g& D9 g
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    7 S# e; r' e5 F, V& m: F0 S                        if(flag) {  c[n+t]=b[i];t++        ;}4 V, @; M5 R) S6 b2 ]0 G( P  u  D
                    }6 |6 x2 F; {7 Z2 z3 ~; e
            c[n+t]='\0';
    $ @  o) M/ G# K6 F. g, t, O, C
    . L! P1 d. b/ E7 K& v7 m}' `& Q9 Y% e. h

    ) c# |; I/ o* F9 Vint L_length(char a[])
    # Z% g% Z. W* M' H; D{
    6 p$ ?0 C$ T% Y9 f! i- I/ I% S        int i,t=0;;- q1 Z: r8 N4 ~7 q5 B) M8 x
            for(i=0; a[i]!='\0';i++  )
    / r5 Q- R1 \  T                        t++;
    % ~, X9 b+ Z! C: f* E$ e        return t;
    # Y1 e9 w% L3 L+ H; C}
    * S: L. O1 d/ B& V
    4 T" j& B9 E2 M1 m5 K
    回复

    使用道具 举报

    慢跑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 编辑
    ' H1 T" p5 s: b0 |  [9 ~& B. d" W
    5 r; V, ?$ U1 g, G5 E! q6 p% v/ tli2.1yong用指针:% o6 o2 A: }3 p7 _4 c
    6 c  P4 D- O  c" L& @9 B( Y
    #include "stdio.h"
    1 Y! _, P. }) [6 P# t" K7 \$ V1 K$ f#include "string.h"- P. \) {& m; H, C. u4 J5 g, c2 Z
    void Union(char *a,char *b,char *c)7 w0 H3 A& ^) J/ I
    {
    - x( D! y) T1 @6 [' v; ~char *p=a;  X  _+ _. S- m: c' |6 ~& D
    char *q=b;8 S; ]7 I4 @3 x
    char *r=c;
    6 {) i8 m- N9 k7 Lwhile(*p) *r++=*p++;; d6 B' z9 d4 T# l% T
    p=a;
    & X0 |$ b" ~2 I! `+ J( m1 ~$ K. gfor(  ;*q!=0 ; q++,p=a  ), {! x: R. ]7 L/ q; G
    {while(*p)
    4 p5 M8 Q  Q% rif(*q==*p){q++;p=a;}
    + u7 ^% v) J# D3 j- @: {else p++;
    1 K1 I1 S+ C3 X: i  p0 g*r=*q;2 i% u. g8 }/ v& B+ a
    r++;
    ) l. u( K" L, P* Z/ v0 f}; u3 ~$ I2 l1 B, a$ j
    *r=0;! J+ b' G; J! ^- C5 ?% `
    1 n& a; W0 c8 I0 |% M  t. H( b0 s
    }& H+ a9 x7 k- @$ ], p! j4 r
    ( u6 c# e3 B: l9 H6 N! h/ j) a; Y
    int main(){
    ! ~8 o) F& l! W
    . H( t! V4 D4 o: D$ c. p# xchar a[10];+ e( y9 b9 p+ l$ S! a
    char b[10];
    % Z+ z) X/ C6 Q  ^& P0 N( O" tchar c[20];& |6 O% a8 `) `. a/ m# o! q# [
    gets(a);0 g/ O7 g5 E6 _
    printf("输入的集合A是\n");
    : u6 U3 e- Q. i. j) P1 V$ mputs(a);
    " }2 P5 I  D" U; I- M" P5 R( |) I# P
    gets(b);
    4 ]; K2 e" _' K+ N# oprintf("输入的集合B是\n");
    % d3 w1 X  c6 U  B# }puts(b);
    6 ^1 u, A! H0 {3 `0 f7 K& K  F
    * [- y+ n3 w8 T! v0 Z8 J" jUnion(a,b,c);
    ! m  k' n9 T, t' w1 q: {3 F& Q) \printf("last得到集合C是\n");
    ; S* Z1 w$ G& tputs(c);" s1 B# K5 \8 ?- r# |" L1 R
    return 0;) K3 b/ d; b( M7 q
    }
    1 i( W; h* d! U! ~1 w! J
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:) U" J) J6 G6 P, j* q$ H
    #include<stdio.h>" g6 h. A" i, R7 k" ?. W2 k6 F3 L( S
    " J. M7 y" _* y7 `6 z, ?( E
      struct node9 u% q! C) z( B
    {! W* v% ^* Z- p$ \/ @* d; M& R
            int data;
    $ M! E6 q& Z5 u5 o! M& c        struct node *next;( F6 E' N# U- U4 m# X/ g
    };
    1 T9 m) y8 @) u/ O; P5 Y) t//typedef struct node NODETYPE;) G0 \/ _2 ~+ s6 ~
    void main()9 {& A) o3 q* _- d
    {
    ' {, v* `' ?% o7 W- |1 B6 Y5 q        //NODETYPE  P  t& q5 X% h# Z' B( N
            node a,b,c,*h,*p;
    8 T) u8 M  M/ h* c9 G* x! P0 w        a.data=10;b.data=20;c.data=30;' d. e# N' T- |5 x9 t1 e: D
            h=&a;: G* }2 b* E+ _& S  n+ ^
            a.next=&b;b.next=&c;c.next='\0';
    % F- [/ Y  }: J8 u& X* c) |        p=h;
    0 h% s8 G, {( T3 W        while(p)8 D, \6 F4 z9 S9 }* @
            {% X3 A+ u# O. S1 K* u4 N: u
                    printf("%d  ",p->data);" {% C, R/ `% S$ |8 B
                    p=p->next;  s) S; q- i4 c! r' C: N- R
            }1 D: A4 ^- \% j# A4 |
            printf("\n");1 R& E  C& Z) l% `9 p
    }
    ; V4 w- b/ A9 X0 |) ~  ]& Y# F2 Y; g, X) j2 K- T0 m: ^
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    0 m; q: w7 ]+ b, n- r#include<stdio.h>
    $ o/ L/ u+ e  V$ ^#include<stdlib.h>" {( {1 @0 I/ r  q4 P' z- n
    struct slist
    3 H$ V$ j. F' t. _4 z{7 \6 i: ]1 t2 s5 J" R; A  e
            int data;' P1 d" U; w: ]/ m, ]
            struct slist *next;" _! l  X* f9 j2 Z6 m
    }; 0 g& c3 M7 l: z3 S0 N
    typedef struct slist SLIST;
    5 v% O+ c2 l# a: a) z! E. [SLIST *creat_slist1()0 J) c2 I( @( i* h. p8 y
    {* d- M1 O$ B7 t2 o3 Y2 J0 F5 c8 j
            int c;
    ; [+ R4 o% x1 X0 j- F        SLIST *h,*s,*r;1 B: W1 r$ n' m$ E3 K
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    ) K/ |" M# _, g' s2 X$ k        r=h;
    & J/ ]6 t8 T6 ^5 x& a( l        scanf("%d",&c);
    * ^+ ]2 B- S. `        while (c!=-1)                                        //当输入的c为-1时,代表输入结束" Q+ L( {# B9 d% ?& b' R
            {6 z/ o% h. T( h& `. W( }/ l
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点: P( w1 R; v! o* q  o6 R
                    s->data=c;
    ; o6 G: J, t# j                r->next=s;% e  p, q8 |0 g
                    r=s;
    6 c. g7 q# q1 ^6 s+ H  p2 ^' u                scanf("%d",&c);: ~9 @" j1 \. k1 v+ ^% l  j
             
    ' Z# E7 `  R, L1 B9 z5 D; G$ _4 F        }* d5 ]  N6 F, B, F
            r->next ='\0';( H, s: t! C9 f, B
            return h;
    0 x- T, P! f) M4 n5 {. c: H}
    * q  I- t: D. Q) q! ^- `7 J9 |0 C* J" z2 Y1 g3 }, J
    /*
    " n" h' ?  _/ M. X& v: R. j/ h  t3 f) Cprintf_list(&head)
    % q7 g+ a& X% s/ e' n{        SLIST *h,*s,*r;
    ' |' S) @1 Z/ B3 ^( Y        int c;, `# @/ \6 G+ W) p6 G7 _8 g6 ?" _
            h=(SLIST *)malloc (sizeof(SLIST) );
    % t1 [0 ]2 W4 Q- T5 ]        r=h;, l: d' f9 e) X( o- A
            s->data=c;/ h# P6 {% S8 q' ?  u% ?' ^3 q! r
            //scanf("%d",&c);! P! h7 A5 m2 P$ I$ [
            while (c!=-1)! p/ d& i9 N& S* \
            {$ B, H; c) G4 Q# ]
                    printf("%d",c);
    ' I/ n' [% |: ^1 ?                s=(SLIST *)malloc(sizeof(SLIST) );: t1 ]' i; M9 B7 Y; ?, d/ F1 P! R
                    s->data=c;
    8 I. F) A8 R0 R0 j9 p                r->next=s;/ A0 L4 d5 V6 g# T$ @
                    r=s;& i" C0 \4 b7 d
                   
      f& D9 V3 d0 |. q. g$ e         
    1 l8 u% L3 }. y' J+ U        }
    ) ?) F% J6 Q- k: z, _        r->next ='\0';
    * p# b4 V- y( ]        return h;
    + y, ~% g2 B( f" m: H0 W) _}4 j" t: m9 S3 B% S3 S
    */, g) b8 S2 C3 P; d) W# f
    void main()
    3 a1 i% G. Q# b2 J  v( X: i0 B{ SLIST *head;
    0 D1 P: E5 D+ v, |. W- U, u9 _+ E$ w2 n5 E' K& W4 v9 d4 x5 D
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    7 q3 s( Y5 u0 c3 m4 a8 \printf_list(head)% A, P4 D- n  K
    }; x; P+ D1 R( W3 {3 P# N" ^
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。( c8 W- e/ Z9 I; g) N  j9 R

    , @; N5 J/ i' `#include<stdio.h>
    0 `/ }! \& b/ ~. B #include<stdlib.h>
    8 S, z7 @0 C( x) d9 q9 [
    : y: v, `7 H$ V- T0 K2 X struct slist: V/ I& B1 }$ ]2 B& \
      {) }: m$ z+ s3 A- h: w6 u% k
      int data;( V0 I( f% K- t& F
      struct slist *next;' o( O  x- ]0 U! d9 ~! {
      };- S2 a1 W( Y+ Y3 l! y- K
      typedef struct slist SLIST;  _# F7 H! t' A) r, X
    / {) x. F' H. h$ U" D3 J$ r
    SLIST *creat_slist1()
    % \' m0 D' U+ c6 C6 l/ z. G  {, z: V' u/ W, i* e; t& z
      int c;; y7 N% s5 I6 W3 Z$ `  u; G
      SLIST *h,*s,*r;
    8 s! M, U% C  D9 f  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点1 J* _" J6 ?  q
    r=h;
    3 e( ?1 u9 r! O; ]: \  scanf("%d",&c);
    ! i9 k& O( w1 `# ~$ ~! K) V9 n  while (c!=-1) //当输入的c为-1时,代表输入结束
    % \+ }: k5 U& K  p* ]& ]  }2 R: _{
    " m8 @7 q$ y0 Ss=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    & w3 B# N/ v, d7 hs->data=c;
    ! T7 F" c+ @0 {1 g0 S. {  r->next=s;9 O, N1 t3 b3 t2 o2 L
      r=s;9 l. t" D  u$ F- V1 ^
      scanf("%d",&c);
    : g/ P0 ~/ a. ], l
    3 E" \( R3 u! x' X8 v5 O" w* e* u}
    9 O5 @* \. j4 ]; t  r->next ='\0';  c7 F( S% p- g) |
      return h;
    : ?& n. w( |" M& R  }, M2 I1 t( V" q  X( J

    , s8 F* a3 V; q( r2 I- l% J: ~% C/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?" }8 [, u, l7 L! e$ O0 l. ~
    int printf_list(SLIST *h)
    + M1 f# m8 @4 T& f  {; `0 y/ p9 G/ w7 v
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚  v1 C% G4 E1 a" `
    while (h->next!=0 )
    3 A5 o) Z4 }- e) n* \* E2 e  {/ w) f5 p: s8 S7 Y  P/ o3 l) L9 T
      printf("%d\n",h->next->data );0 K, A' X7 v/ ~6 w4 j4 T* Q& P4 U$ w
      h=h->next ;" Q4 h/ t. P0 k) V9 y
      }  n  _5 i2 p7 ^- Q' M9 ^3 ?
      return 1;4 e( B- }: t; u$ M
      }: u$ _7 o0 x, W' r: h! V
      /**/$ `9 a9 v0 @. ^( m" B* v: F
    void main()8 K' c0 \) a. P% k
      { SLIST *head;+ \6 A+ |/ }  U: A' v) s  Q/ f

    - h% q) }! y1 T# }; L! ~: fhead=creat_slist1(); //调用链表建立函数,得到头结点地址
    4 S4 F" |5 H( M# B% Aprintf_list(head);7 S: G$ E9 ^7 `& n
      }5 H% _/ l8 O2 e: f- O$ N* m6 A

    0 |- J8 A; d1 B7 X' J* ]2 N+ ~2 J2 H) o3 c$ G4 z
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-6-25 13:30 , Processed in 0.563703 second(s), 89 queries .

    回顶部