QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2448|回复: 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 编辑 ! A) q) k( {1 q) I' v  ]0 E7 Z

    2 {: D6 q$ ^, Y: U0 o计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。' H  ]& C' [: w% {( t
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    3 [( r8 i1 S' U/ s/ B* R" k1 Q
    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集合。/ L! c4 h- l5 c# `4 W( }/ ], q
    这个代码是用数组的、算是比较简单的。2 J& ~' Y' k& J- E  X" C2 ^5 r- J

    5 M4 A0 I) p6 V3 i; \#include<stdio.h>" b1 q3 k* V" F
    int L_length(char []);
    2 h9 e+ c0 d0 ?+ ^; [int main(){9 ~; U, z% c; N$ y9 H/ f
            void Union(char [],char [],char []);
    3 }1 W, h- D9 R3 ?2 |. l+ T! w+ M9 N* P$ h
            char a[10];
    + T4 _5 D/ X  I2 M! k- n        char b[10];
    + @5 D: v, ]. K7 h        char c[20];' [0 p6 p. u. @8 c
            gets(a);
    / k8 E4 N1 B- U& J' m8 z) r& |        printf("输入的集合A是\n");
    # I* B0 s- ~& K. D2 l        puts(a);
    8 h# F7 N0 ?) M( e# E; C$ Y 1 l8 Q0 Q! I% r* |- M
            gets(b);& F. W/ ~1 `. g' k1 r8 j' N2 y
            printf("输入的集合B是\n");
    : w, r4 q+ l7 l/ z9 x* G1 q  K9 T        puts(b);' ~5 Z/ H5 l- e( n

    * Z, ?  y2 O! d! e2 X' o4 V0 ?        Union( a, b, c);
    3 `$ w3 O( T) v* e/ @$ ?        printf("last得到集合C是\n");
    % U! X) S! |+ {9 C, ]: p        puts(c);
    1 `6 `1 r; \5 n0 r; z        return 0;
    % |! H7 J9 d% j}# t2 \& C. m6 @

    2 O& m# A3 e0 \- ~( Fvoid Union(char a[],char b[],char c[])5 L% l  D: b" L! F6 V2 k7 E
    {0 O# ~$ q5 o/ ~' s( m. D
            int flag=1,t=0,i,j,m,n;
    ( x4 j& Z3 Q5 g/ s) E        m=L_length(b);- Z8 _' E) A- t" A; L9 _
            n=L_length(a);  C7 G+ U! C3 K5 w5 r" P
            for(j=0;j<n;j++)/ p7 O; ^, ]4 o, n! O3 t$ n
            c[j]=a[j];1 t* G& e- T8 c' y) J
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;2 I1 i" m& u1 B  o- ?0 k9 W
                    {for(j=0;j<n;j++)
    & I& r0 N% s; ]5 x" L% H! w) H                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了& I, ]$ X; W9 g( M5 s8 V( ?
                            if(flag) {  c[n+t]=b[i];t++        ;}
      r% f  O" L5 B( `                }+ R+ ]! z7 g' B4 H& b# H
            c[n+t]='\0';; p4 `; p5 u  e
    * N6 R* |# B% K
    }
    7 m* T5 b( p# i& V  Q! J
    0 \* @' m$ X) bint L_length(char a[])
    % s4 Q) N% k0 \" ~{) v- N6 B2 ]# `2 c9 l
            int i,t=0;;
    , M) k) D3 M- e9 F. ~/ |. _        for(i=0; a[i]!='\0';i++  )# I' P2 T" H" |  X# Z0 B- G
                            t++;
    8 B) N% V% c% q, U6 Q" z        return t;
    % s) R% X5 L5 h}
    7 u, a8 y' e! |1 }) @7 A
    " f& Z' e$ ~/ R" E
    回复

    使用道具 举报

    慢跑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 编辑
      }( ]" [- }- [: h: O% K5 }6 p6 J3 H5 ]0 B: T& E5 ^$ V7 ]: U
    li2.1yong用指针:
    , P1 K" x3 [$ c/ [4 o3 o4 J/ ^
      m5 z2 S, _1 V#include "stdio.h"' i  y# C+ ^* f; l% R! t; n
    #include "string.h"  F* Y0 B7 I% r8 h% g
    void Union(char *a,char *b,char *c)
    3 g. W7 F* c" t, O{
    0 K+ r3 W3 }  o, W+ uchar *p=a;
    4 e/ |! g. }8 ?' l; ~char *q=b;, i! X& \( j8 h# Z2 X- U5 r1 M4 v0 C
    char *r=c;0 H" j. |8 r" ]7 B7 w
    while(*p) *r++=*p++;: O; ~) c* R! _: d. w
    p=a;
    & t+ |/ g/ a$ S7 t+ y( Pfor(  ;*q!=0 ; q++,p=a  )
    / k  C; H0 U) D{while(*p)+ r2 Y; C) z! |  ^' Q0 d- M
    if(*q==*p){q++;p=a;}
    % ]8 Y2 c  l/ i  J, D- A+ Oelse p++;! J5 i$ k: E' ?
    *r=*q;6 r2 W# E& N" ~# {5 E
    r++;
    6 R# Y; X4 H6 g+ f}/ y; T# M4 p2 g: Z- `
    *r=0;' [; `) [  G( ^6 J8 P0 l  s+ H+ R
    4 {% f+ f2 Z5 [5 M0 R( x) k
    }
    7 M1 h" H! K4 D0 I! q4 u# z$ ]+ s; N9 U8 E1 w  j" P
    int main(){
    # G6 k* F$ L, H' ^4 f- p6 `& b9 E  H5 x0 j
    char a[10];
    ' K0 f" B7 P  F0 m5 h6 dchar b[10];
    ( X  y: V) b: \' u/ d4 M4 bchar c[20];6 C2 Z( E- n! F, }/ ^# O. W" ~
    gets(a);5 \! D8 d/ e% V  H. t7 e, k
    printf("输入的集合A是\n");6 m$ N3 m9 @4 t: H$ K
    puts(a);% o* a) V3 c6 Q
    ( K6 X+ M; V6 R
    gets(b);( Q: [& D2 N& K0 B2 p* O! \& l
    printf("输入的集合B是\n");/ q! ]( w$ G. v$ ~( W
    puts(b);
    + |6 T, y( w% |$ E  D1 @/ |+ ?. W
    % W5 Y6 n4 v, W( NUnion(a,b,c);) n; v, w& z2 _
    printf("last得到集合C是\n");
    , J( V2 g5 G- Z8 B  ^puts(c);8 M& k" b/ x+ ]
    return 0;
    . \9 \* U' T; k" B# W" K}
    " N& Y, {& ?$ |. e: T! B% t
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:9 ^# R& R- q7 k3 U7 T9 n. l8 J
    #include<stdio.h>4 _, ~* w: Y% n& U$ J, _

    9 `$ T; v. l6 [# j3 E9 l  struct node' n3 w- k' i; v+ z" z# w9 G4 u
    {: x" u! d  ?% ?1 Y' f; N
            int data;* d8 ]: Y; u' V
            struct node *next;
    & T, Q3 [7 z4 H  }9 c- p% l8 H( \};" F( \) J7 X  ?3 m2 q
    //typedef struct node NODETYPE;; F" ~9 W) W1 i1 x; E. `! p6 D
    void main(); p7 G- J9 `& T. Q) Q# r/ P
    {$ R4 _! ^2 l1 N" g: o, ?
            //NODETYPE
    ' q1 p/ M4 R. T$ @" X1 C        node a,b,c,*h,*p;) N+ A7 t  ^- N: V( E
            a.data=10;b.data=20;c.data=30;' V; z& W8 H$ l$ V3 ^/ b
            h=&a;
    " o* V% F" S2 M        a.next=&b;b.next=&c;c.next='\0';5 Z8 B; p) Y! d9 \: C
            p=h;
    4 z3 ?+ Q7 j# J        while(p)
    ! ~& c# {8 s7 j' A2 R        {+ R2 n% o% m- {; h" O
                    printf("%d  ",p->data);7 e; S' q$ W4 x% B& O
                    p=p->next;
    8 k1 m" q5 ?% K! y        }
    # P8 J% o4 {: G: l, m        printf("\n");) L- w! f) G' q4 @# v7 T, @
    }( s3 e2 r  k, e
    2 @+ {$ F  k% D, G0 H( a% ~$ q7 I
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    * s  z# v7 i% I( w  y#include<stdio.h>* a( A3 G. _$ m
    #include<stdlib.h>
    0 c  ^8 _- V6 l9 h9 H3 estruct slist, X% H- T8 ?& m6 f) a
    {' ^7 c2 `6 t1 ]# t
            int data;
    + D# [/ Q2 w& j9 L* v4 x) f9 B+ b" L        struct slist *next;" u0 r7 x# [' Y0 `  ]
    }; " r6 k2 k/ y# c. g5 V) }
    typedef struct slist SLIST;
    $ r5 a/ I: h2 k' R. @; Y5 _SLIST *creat_slist1()* I6 [5 w' O" y7 {* a
    {
    # F% }  A* W$ H  J) V5 Z; z        int c;
    $ r" \) Z3 ?8 ^; q        SLIST *h,*s,*r;
    ( W. q% \$ k) h2 K: c* h$ |        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    8 g  B8 c% Y7 n0 ^5 h% a: S        r=h;; g( h# I9 t3 ]9 L+ O4 V3 {' E
            scanf("%d",&c);
    8 k1 b$ G4 g  _- h: t6 e) D- n' ^        while (c!=-1)                                        //当输入的c为-1时,代表输入结束% A( b! }+ v0 Q  a' n
            {
    0 t2 `- X/ {0 K- l; m1 [. y                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点" }  N# M! T: x; K9 f# s
                    s->data=c;
    4 [# V) ]8 J! L- V+ X+ n' J% ]% {                r->next=s;8 |0 A' C( Y* P  R1 Q% p9 R& i+ q7 {
                    r=s;
    - f3 i! K! p7 E) w                scanf("%d",&c);2 \8 j0 B9 \7 S7 p
             # j; {$ @: l4 X* e0 H  b
            }
    6 Y; @( `5 h7 a3 u0 g- m        r->next ='\0';4 W1 Y4 \$ p( P) K# E. ~
            return h;6 D$ N) C7 `% l  N& g
    }& \" |, w8 ?% h- ], w( K* D& a

    3 G( ?; w5 N9 [: h9 B, Y5 u& o/*
    ! d& e, a8 u- k3 bprintf_list(&head)! c$ d$ z: [9 J
    {        SLIST *h,*s,*r;% h8 X$ t) _1 `: M/ d: W7 _
            int c;
    " [! ?5 f$ ^2 Q        h=(SLIST *)malloc (sizeof(SLIST) );. \4 D! J. f- i& j& y1 z
            r=h;
    + `$ Z$ o9 B' {9 M1 U7 k. G. k        s->data=c;2 l* W8 d! _3 |9 k# E  X
            //scanf("%d",&c);
    1 u" J) Y" }+ C0 P        while (c!=-1)
    0 v. F, \5 p# h        {
    ) F" S: w; v% s& g" o- o                printf("%d",c);4 u5 f8 ~5 z  V8 ~
                    s=(SLIST *)malloc(sizeof(SLIST) );+ v: C: @: c; U/ t$ h; Z( Z
                    s->data=c;
    8 C1 w. g- m  N. [3 i                r->next=s;4 _  y, @1 V$ z4 A; o
                    r=s;; J0 g4 Q1 E. Y( u6 T
                   
    4 F" l/ N7 F, [1 Z( l* R* @         & z* W/ X- M0 t) x2 G
            }& ^, s3 D6 k( N/ u
            r->next ='\0';
    $ n& }1 A7 h( k  C; I2 f$ b: A0 O7 O        return h;
    # z, I5 U) V, r6 J}
    6 }7 }7 f1 `0 Z8 s8 v& }3 ?$ K*/
    % x* N1 L9 f! I$ hvoid main(). s1 n* C2 U  M5 P8 e2 j
    { SLIST *head;
    ' s. U: }; J; r3 _! A5 N( C9 r
    + M' e) {6 ?4 J$ a! H% }5 ehead=creat_slist1();                //调用链表建立函数,得到头结点地址8 p) f' e0 {* e/ n' d% N
    printf_list(head)
    # V# K6 I$ \4 q' a( R}
    " u2 E1 p" K+ Z$ ~8 W/ T: Q
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    5 `8 v; F/ l3 i* A$ h3 O% b! j) h( @  [2 @' A( U
    #include<stdio.h>9 X3 J% e+ {/ o: m
    #include<stdlib.h>, z  O; ?# \4 D

    6 ~* L' W% t1 v- ~3 o: G9 Z struct slist8 i6 N9 W8 R- w  ^
      {
    + O$ h4 w+ \$ e3 y5 L  int data;; D9 M9 N9 J/ v" V3 u' w
      struct slist *next;5 A; @, N: b1 z* ^  |, j. F
      };
    ! `. j4 n/ c( K3 g: d, i+ h0 h/ }  {  typedef struct slist SLIST;; C8 @: X' {4 g2 d( a& z

    6 f  T/ @! g' t SLIST *creat_slist1()  l8 g' {* b( @' g) c7 T( _& _
      {
    : K% @0 p% T, ~% N0 X  int c;
    $ ^3 s( W" C* {: d" g  SLIST *h,*s,*r;
    ( o& Q$ U: L/ c& X  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点7 T- E$ E, Q( A2 @
    r=h;
    ' O. {+ f. W# v* g* W  scanf("%d",&c);
    * ~. X6 W# y4 ^( \# h  while (c!=-1) //当输入的c为-1时,代表输入结束
    . F( x& m3 {' E, N{
    9 |+ r* a- {5 t1 i5 z, L: A. r6 zs=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点! j0 m5 b5 a3 `/ F0 \: X+ ~- c
    s->data=c;
    / F" m- W3 a$ r7 q  r->next=s;
    % {5 W6 \' N4 \0 v$ Z  r=s;
    0 D) q5 E" b: r- }6 @  scanf("%d",&c);
    # O- V! U# y1 L
    ! R- M9 _6 \5 w}( y+ \2 \4 G2 h  _3 @
      r->next ='\0';
    3 c. q  R0 M# B1 X  return h;
    ' J7 g% ~& @) v' X! J  }4 X% Z! h, U4 w. `1 Q1 X

    # e5 n% T* i: Q  I. T0 C2 r4 [( V/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    : ^, L4 X  t, n2 F6 X7 n! E, Bint printf_list(SLIST *h)2 c/ T# {; O) N$ U
      {
    9 M% {3 C2 d: ]  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚" h( S7 w4 p# S) ]0 `: O3 w; E
    while (h->next!=0 )  Q9 W/ f4 s" F
      {8 z7 ]) ^( _  t7 G7 v
      printf("%d\n",h->next->data );
    6 b6 W1 h' S- J( h. M, z  d  h=h->next ;
    & Y/ n. P; v% q5 B5 K  }2 a5 U5 |+ {; W) |6 I
      return 1;
    1 f: V! c  K; I2 [  }& C! Z* y! X# W
      /**/! I# L) @0 O$ D$ e5 t
    void main()# D1 B0 [( [- ~: a/ y, \; @
      { SLIST *head;
      Z# R+ r' x( m6 o5 g
    # E" t, k, o% K4 g: Ahead=creat_slist1(); //调用链表建立函数,得到头结点地址9 ?( N3 ~4 E! P. z; W
    printf_list(head);8 y, g1 I7 R$ M
      }' w; ^, j" s. C, _  m
    , B9 m3 J% U& y" {0 h& j

    $ c6 {6 a+ _/ S+ |+ U此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-6 18:02 , Processed in 0.679431 second(s), 81 queries .

    回顶部