QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2406|回复: 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 编辑
    # }! v4 r5 k: g) f( t- f
    : h% k( P0 Z/ h# z2 e3 J计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    % {: C" I! ^/ q6 j/ O刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    - Y3 ~, K1 W3 Q* i- P
    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) n7 n* h' k# Z这个代码是用数组的、算是比较简单的。" k9 `# R% }& h

    8 z/ e5 E3 H6 S1 F( w/ i* @#include<stdio.h>3 Y5 a5 P5 m: ^9 W5 \8 I
    int L_length(char []);/ f0 b, W8 j. D% M$ a
    int main(){
    8 M# x  f% i0 K# X        void Union(char [],char [],char []);
    4 V8 E. d' v4 }' ]( R+ n5 A" J3 X) g
            char a[10];
    5 b- \. H( ]6 o        char b[10];
    % ~1 }4 E6 Q7 w( X& v        char c[20];
    / O" a9 \& a5 T2 a: g3 M        gets(a);
    # Y$ R1 M: c  Q( t! S        printf("输入的集合A是\n");: b' X8 ~3 S* v; j% ~  f
            puts(a);; C% q; N5 |. r$ k+ K0 w
    . {1 \0 g: C" v) S- Q1 k% U1 S
            gets(b);
    1 {1 L# T1 ]5 l' I        printf("输入的集合B是\n");
    1 w. X' N  i7 \) K# e* m; U2 b        puts(b);
    ! [4 |. O) ?5 k& i! R# N& K
    2 k% ^. p( S2 }. P" j        Union( a, b, c);- p. @' |$ v) y3 T! u: G- T
            printf("last得到集合C是\n");
    - ^, Z# ]* ~& e% F9 `+ Z, }        puts(c);( a' [5 ]1 D4 W' D- w
            return 0;; ~0 {) \$ D, k; ~+ \+ a- e
    }
    2 G0 T+ z* [& s& ]. D3 G$ M# k
    " g5 |7 t( k7 W/ uvoid Union(char a[],char b[],char c[])% |& _& j# `% M* k9 m7 Z
    {
    3 Q% j, G8 c9 N" x        int flag=1,t=0,i,j,m,n;1 Y+ m6 g+ Q! M4 I% s5 ]
            m=L_length(b);
    $ p; Z) M- B7 F" T        n=L_length(a);
    2 Z; P( l' m6 _1 E. v9 _        for(j=0;j<n;j++)
    + L" e& t9 i% O2 t7 d/ E& a        c[j]=a[j];/ ?' _- N, @2 M+ w8 _# U1 j6 V
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    1 o% ^4 _/ Y0 X5 l( _0 G, `! g                {for(j=0;j<n;j++)
      s4 q6 L$ |  c                        if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了( `' j% k8 x. S* ^5 M
                            if(flag) {  c[n+t]=b[i];t++        ;}  D' f1 l; c+ i# @' t
                    }( A; a" O' K. f4 }: X0 E
            c[n+t]='\0';% c# V# A0 b( N. {
    % I% Q$ ~4 o5 e8 N
    }
    0 W, G+ r# d1 l/ u% E; l/ a/ X7 s5 V
    int L_length(char a[])
    ) g, v5 }5 q! V( m/ i{7 Z( G3 i5 P# l# K. F
            int i,t=0;;& E) r; B) d, B7 e4 d9 N
            for(i=0; a[i]!='\0';i++  )( N1 c' g/ U' U
                            t++;7 s1 y+ j. U7 S0 t- }7 u8 B
            return t;$ }1 k: Z; j( }+ b4 {1 r
    }
    4 y& D, z$ E8 A4 \
    * f8 g1 w; P$ I& Z8 @+ ?' h3 |
    回复

    使用道具 举报

    慢跑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 编辑
    : c5 e1 S0 v4 I  ^6 M1 H/ b$ s1 P( |: q1 j
    li2.1yong用指针:
    9 N) @  g: r% e& O9 p  w. q$ V/ B- {7 l/ g- v" R2 j/ Z
    #include "stdio.h"
    " C2 X, x7 i( l8 {- V#include "string.h"0 W  U5 k, e, ]8 z, Y5 D5 {
    void Union(char *a,char *b,char *c)
    ) K, R9 M; B/ W* J6 v{
    8 Y& E0 x& x0 d1 A# `+ X1 F8 Q1 [char *p=a;
    / S' F9 q2 ?5 U  y$ xchar *q=b;
    8 R* q3 T: v7 k; zchar *r=c;
    ; |0 D: r  w! c, v0 y: d0 }while(*p) *r++=*p++;
    ) K, u" d9 O; Z  l" I3 O: lp=a;
    ) R+ u# j6 r$ t( R5 @  mfor(  ;*q!=0 ; q++,p=a  )
    ! v5 `8 c! }5 B{while(*p)3 n  g4 l9 B2 H! C+ @% p
    if(*q==*p){q++;p=a;}2 Z8 l& K+ u) v+ r0 y& W
    else p++;) r' h4 [3 Y/ L0 |3 D2 B* a
    *r=*q;
    " d; k% {; b' m" P* Or++;
      K& j& x" L( H8 x7 _* m3 Y+ L) }8 e}
    - r1 X: p. x% \5 W. C2 |*r=0;# `0 y3 g* Z5 P# m! V& I
    0 y1 u: ?, e" H8 Z' n( G
    }
    , u2 A/ X4 c$ }( l5 d9 ~5 M; h- h
    , C/ p' W. F2 M# ^0 l; N- dint main(){
    $ u2 N4 E3 G( `; u' {% l' w- N
    char a[10];
    8 p+ u2 @& t. |4 g! Xchar b[10];# a, w3 g* z, V1 b; X
    char c[20];4 ^! S7 R7 ?. S  r( m8 J$ F
    gets(a);8 A$ t; ]& R# F' S* c8 m( P
    printf("输入的集合A是\n");$ Y+ i9 x& h$ i! v% Y
    puts(a);
    ( n( i* G1 z9 _5 t# y+ K: q0 T. D. ]
    gets(b);4 [; x. u8 s, ]  o1 p0 i
    printf("输入的集合B是\n");
    6 g' R9 f% A$ i% u3 J. B: Lputs(b);5 U; @3 ~. r& d0 O6 k$ ^2 A) Z

    ( n, l" Q7 d, [! r( }% dUnion(a,b,c);4 }. P! Q  D  i* m6 T4 M& X
    printf("last得到集合C是\n");
    * L% C7 n( ^: C: v5 f; U# Bputs(c);( t: T+ y$ h9 a" K5 ~
    return 0;& C9 b% |. }7 V, b
    }% S! j% Q" E5 i2 ]2 g8 z
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    4 {- P( n& @( c! J$ c  H/ c$ k#include<stdio.h>
    # ^6 I2 Y9 F2 L3 j; X/ J4 q: W, P: U3 e) a9 ?( f
      struct node0 F8 }- u5 d2 A4 W+ u0 f( G
    {
    " J; y) C2 w& G, ?7 O$ h0 t        int data;
    % D$ M" Z" N; `+ B% X* S. D& u6 B        struct node *next;
    % M9 Q; |) T1 h};; L& q" x& ^8 B" T
    //typedef struct node NODETYPE;( P1 n2 a/ m: t4 _# x
    void main()
    " |: T+ _8 ^+ T, k& D{
    $ c  \% O* X+ ?        //NODETYPE
    8 ]: k$ |* `. d. e% U7 E        node a,b,c,*h,*p;! M. y' E, Z3 f% i1 r
            a.data=10;b.data=20;c.data=30;, t& b/ U' _& \' V
            h=&a;2 \0 m2 h  _" G1 l9 u7 [
            a.next=&b;b.next=&c;c.next='\0';! |5 |9 e7 G# u1 v
            p=h;. I6 u" Z$ U8 ^! V  f! J
            while(p)
    0 l6 ]9 b( N6 \3 B6 F        {* N4 W5 w6 }' Q* C9 k* l. \
                    printf("%d  ",p->data);% v# U# Q( e9 Z+ B  P+ _
                    p=p->next;
    - b9 P0 E- ~/ U( M        }
    ; j$ V9 Y! K5 N  T+ G        printf("\n");& k0 q9 s. e7 S- W, j
    }/ h; \  U0 t+ l/ R
    8 S7 q: R( G& z0 L9 }2 _
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:$ G  d& Y3 ^, Z- o4 L" I$ C
    #include<stdio.h>1 A; g- ^! _; J% Y
    #include<stdlib.h>
    9 h: `& a' m3 e$ I' qstruct slist
      I; Y# n, b% N* Y{0 d  W9 Y  w) a# V( T2 j1 |
            int data;7 B; D2 q! w$ `: \5 \/ G4 ~
            struct slist *next;
    & E9 H0 M$ S% O8 y. ]& A}; ; r' [2 G0 [4 J
    typedef struct slist SLIST;. t+ T/ S# i- O6 V3 G% y6 s
    SLIST *creat_slist1()
    ( q: ~% b0 z- N  |9 f{, p& v. Q* {4 g% B. _
            int c;7 Z! r  c; @6 j+ C: D* i  i; u/ I. b
            SLIST *h,*s,*r;
    ' Z5 o8 e7 A; n7 |        h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点) X9 ~+ ^  s" F" L/ H$ e' N9 c3 o
            r=h;
    % j4 V/ a/ C( a, k9 L" d        scanf("%d",&c);5 ^0 n6 }5 ]- F- U
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束# M/ F5 R4 u: U# \2 l
            {
    * M+ }0 m: _5 a' u( m! D                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    5 |+ g; |  X; K6 t. @& Z                s->data=c;
    " c" x; e- \- A( ]- a                r->next=s;
    " l8 |' \# g; B5 G: e0 i) H                r=s;* L: J1 q% E. n* E( S! g0 y: f
                    scanf("%d",&c);
    4 ]# z' _4 W" V4 G         
    % {; H. S$ k8 j1 K$ g. b) `* K        }1 I0 |9 v; q9 a6 |& @6 h
            r->next ='\0';% w+ Q' Y& H" e, G
            return h;
    7 H# F% `* g- i* S& ?}) I* R9 r. U2 w5 d/ I% Y

    6 P  a: t# U/ Y+ ~8 A2 f/*
    / |$ ?8 N' @7 [4 ]; C' ]printf_list(&head)2 c$ u! o' S# z" U' p1 w. e1 R' p
    {        SLIST *h,*s,*r;7 g- ~0 h- E7 A0 P$ d. M3 y3 t; L, _
            int c;6 l/ P6 W  i# I* _/ g1 e$ R
            h=(SLIST *)malloc (sizeof(SLIST) );' P5 @1 a& {  O1 H  M* {5 f) I  r
            r=h;
    " e' U8 m9 M: W; J/ O, D; F& r$ F        s->data=c;
    + s! H+ {6 u2 h3 ~        //scanf("%d",&c);
    ! E( x2 ^+ c7 D0 ]4 s        while (c!=-1)& l7 i2 b: U  @# b
            {
    6 M$ j& ^9 u7 M0 h" I                printf("%d",c);* b0 P; s, v" @& E7 H" E) m- T5 ~# r; \" q
                    s=(SLIST *)malloc(sizeof(SLIST) );
    ; w5 D0 m: f. B8 c/ |" [/ w9 S                s->data=c;
    : t( }3 r' m, w5 Y; T* J6 \                r->next=s;6 X# Y6 n3 }( C
                    r=s;
    8 J8 H% i* O/ p0 V: I3 T( n! v7 R               
    $ B! V9 f& P0 |: L         
    ; k; {$ b9 t; j  t8 {: p        }
    ' O. H0 w4 j) X" `7 i        r->next ='\0';0 J" K6 R' |5 Z8 \" n
            return h;0 M( x8 _1 O$ o$ J) o
    }
    5 T  p) G. h1 E*/
    : h! E7 r9 {; M6 X! jvoid main()1 Z4 A4 w( `5 i& |
    { SLIST *head;
    0 j* S5 f0 u9 c0 @* v, k1 z, ?- f0 B- ~' b( ]) W" N( g# o7 x8 r6 Z
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    * ?# b& i+ M( G, Vprintf_list(head)
    ! ^$ M* u3 A' G2 ~( i0 a, i. p}$ R8 @% t  Y* C8 q( H  d0 Y
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    + J# e4 z. `1 N2 V4 U6 r% q4 m4 F+ d" b2 L7 H
    #include<stdio.h>
    * h9 y4 e, x# |$ u3 I4 @3 \ #include<stdlib.h>  R3 @% \; @' ~* l3 }" T; T

      U8 s$ E+ z9 z1 Y+ N! Q7 X struct slist
    ( I' x$ J+ S9 K; P. O  {
    ) [! X* _* T2 l7 K2 ~3 s  ?  int data;) w  v- n, a) s, r2 O% B( L
      struct slist *next;( Z0 y$ A7 f& _1 Y  W
      };
    5 l8 _, B' z- e0 j4 V. V. ?  typedef struct slist SLIST;
    ; \6 [6 R8 v. J# [8 |9 r6 P
    ! H$ p. K" {2 A7 i2 @! Y SLIST *creat_slist1()1 \/ l% P4 q0 P. X+ [# N7 o
      {
    0 e. T. E8 Q/ Z/ g; C0 ~  int c;
    & C3 ?. D; [! }( ?  SLIST *h,*s,*r;9 ?3 m8 y+ r; s' T9 n$ E: }/ \
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    # ~8 ?7 x4 S; Q/ y' Z  N. E/ ^r=h;
    ) E" t0 ]: I8 ~6 Z9 }# C  scanf("%d",&c);
    ) d! E# A/ V. d6 q* g  while (c!=-1) //当输入的c为-1时,代表输入结束
    1 w: V  U7 B( s, k+ `; b$ l; d{& h, V1 @+ ^0 [; Q$ q
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    ) m# E) j, C3 s, T2 Fs->data=c;' X; l0 E" o: F4 I3 c8 e; u4 V
      r->next=s;
    2 ]8 G! x' U5 ?. J7 s7 h- @3 e  r=s;
    : b+ v* W1 P- i9 X# P  scanf("%d",&c);, X5 x% c% V2 t. J% E
    6 k; z9 h5 W, r( ], d& N% J, Q
    }
    + h  b/ u. I$ E& `( `  r->next ='\0';8 F+ @% @8 l  T( X
      return h;  y( y' l" B, I7 x/ v: r$ {
      }
    ! u  J% m5 Y6 {  k  D: K
    / f. C- }8 t- H0 t$ M4 W& J+ D/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?) \# _. `( z& `: Z
    int printf_list(SLIST *h); T3 }7 H6 U7 w. _1 J
      {
    8 U1 {" H+ U, f0 i" a# E  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚$ t& l1 Q7 A) a# [: V: Z
    while (h->next!=0 )
    6 R4 c, b$ G' z# S( U0 R9 G. `  {/ U5 K3 N" N9 [; m5 `
      printf("%d\n",h->next->data );! s% s' A1 O' H7 y# W  U& i
      h=h->next ;2 a0 x" C) `+ F0 z, q) e$ @; b
      }
    " F3 }' d3 B4 ~4 g. Q  return 1;
    ; r0 a4 |; N4 {; k, @7 Q% N  }: D5 x7 X6 I8 k  v/ V) E
      /**/
    ( ?" }5 X1 d& u' U2 H2 z void main()
    ; C+ Y$ T- G/ ^& b" W* [  { SLIST *head;
    2 v; j& ~0 b8 m# q! ]) e0 x
    . q( g* K; n" F! o6 r- l9 shead=creat_slist1(); //调用链表建立函数,得到头结点地址
    4 v% b) j5 s9 _  o$ T) o, j2 vprintf_list(head);
    , F4 f* O3 ~6 _7 P6 W7 a' l( M  }0 [' R- Q7 X& p. Q; }1 p

    ' C7 m3 ]; V% I1 P. t2 F, @; r# `6 C% W8 C1 W( T7 W
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-7-19 09:10 , Processed in 0.464108 second(s), 90 queries .

    回顶部