QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2365|回复: 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 编辑 " Z( b9 a% G6 t/ |9 W- G% K  j
    % w6 T6 o; o' J- t6 u& H" J
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    % _, {$ t  s5 h3 s) c7 s6 S刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    ' Q+ E" W/ _$ d! O. c$ d3 p  y
    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集合。* n8 B7 u" P9 m& V; I7 `
    这个代码是用数组的、算是比较简单的。
    ' M8 d: w' C" k1 d
    & S6 _5 U0 O" \) M#include<stdio.h>! Y' k1 \7 l! L& o7 t* u) F0 w
    int L_length(char []);
    ( m- U8 l1 I5 ?; \8 V' Tint main(){4 ]. n' z- b$ v% x5 ~4 W2 A
            void Union(char [],char [],char []);
    ( U; }% g/ g9 V& y7 }6 D
    # n- c6 X( b2 W        char a[10];
    ( T9 ~" @/ M1 T/ q& w' L        char b[10];
    2 l7 f8 r' P' E5 f3 d' B# @$ N        char c[20];
    8 t- j5 S. w2 f7 F        gets(a);& ?3 N  s. k! ~3 ?, f! m' X) @4 ]0 ?
            printf("输入的集合A是\n");( W; O  T6 r! k
            puts(a);9 Z2 f* V. J) I8 O* _5 h
    1 ]0 s3 X" W8 S- D5 H$ _, o
            gets(b);
    ( l1 B' @& a* q$ A1 R0 t        printf("输入的集合B是\n");1 H( F6 t0 ~- R  A+ R6 X
            puts(b);9 q' o4 C' C* m* e: L" t( X

    0 z0 _( `7 Q; b9 c7 R        Union( a, b, c);2 ^: n! W$ K) E( d  z6 k% ^
            printf("last得到集合C是\n");
    8 R) D$ q' n  ~) t" \        puts(c);
    8 W, B; D$ d' t" s2 P7 y+ T7 t        return 0;
    ( U0 P# F0 t2 j$ r4 W8 o7 O}
    ! Y* W2 y/ F. G+ A9 h9 R# T' D8 ^* n2 H& m7 g+ z
    void Union(char a[],char b[],char c[]): o; m. t' D4 e  Y/ |3 X8 @* u
    {" Z5 n8 b  M: |
            int flag=1,t=0,i,j,m,n;
    4 l' y  k8 a" W. p. O        m=L_length(b);7 s( l9 n( P3 O) Z8 a6 e0 K
            n=L_length(a);
    * `4 y6 ^  }( f4 k9 m. R' U9 X% j        for(j=0;j<n;j++). l9 F5 d6 f% o6 h3 H8 H2 h4 B" z
            c[j]=a[j];9 n- l; u( K0 b  f
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;- h- \  j7 k* K& B% G5 ]- R' b
                    {for(j=0;j<n;j++)/ _& W. e: r" z! y- m, S
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    ( x. _* p$ a* i  X. h! O: F' k+ {  Q                        if(flag) {  c[n+t]=b[i];t++        ;}; B! x6 a$ n6 A1 E2 g
                    }$ c2 _8 V9 b$ g7 L
            c[n+t]='\0';
    8 C* r# R/ x  \1 i( G* a9 D 5 M8 N' k+ D7 o" r  M' Z+ d
    }
    2 I5 ?+ t7 a* H9 W! c' S- B& t8 E' f9 C& F# F+ v
    int L_length(char a[])
    % X/ T6 O1 r' Z$ i4 Q; f{
    7 L: A" s+ C9 C- A  l7 ?        int i,t=0;;( m8 i1 [0 F2 ]" g2 ?7 u
            for(i=0; a[i]!='\0';i++  )* `% c% E6 f, _# r1 a+ [& H4 O! I7 [8 Z$ I
                            t++;8 s; ]+ g7 Y$ S3 v
            return t;- G/ T3 A' E1 c
    }
    / O4 o  y' w( C  e1 ~2 ~$ @
    / e1 b" E! h  W
    回复

    使用道具 举报

    慢跑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 编辑
    : C. O- D5 H* x" m
    6 c- t* g# e1 bli2.1yong用指针:0 i' O' \" }2 I# o8 J
    % I# {# R& U  U% t( O4 k
    #include "stdio.h"
    ( n" c3 H6 |% l) g7 }0 L# {" O8 Z5 A#include "string.h"
      H5 a6 U' o, z( f4 ]void Union(char *a,char *b,char *c)
    , j' G" b1 ^1 U9 d* b. K0 r' \! j( |{. M( n! @% x" U/ S" F, q3 y
    char *p=a;2 ~/ a. o/ v8 G# n. v) ~/ q+ }) P
    char *q=b;
    0 h& n4 ^: v$ pchar *r=c;
    6 A5 {; T! N0 L8 q0 {7 S% Nwhile(*p) *r++=*p++;6 u* [- t5 t1 _3 H. G' N
    p=a;
    & l1 t) o. B" }/ Xfor(  ;*q!=0 ; q++,p=a  )
    % {/ x) ~9 I" G$ }{while(*p)( ^" d: t7 k* t% i& C7 ]( ]
    if(*q==*p){q++;p=a;}
    ' ~) q- i* g' Welse p++;( y5 {, H7 N8 Y( B+ n( J
    *r=*q;
    / a& P. L: ^% K2 T3 U, er++;
    ( Y" h$ N* w. J: x}( h& Y% n: \5 L6 b
    *r=0;
    ) M$ v; y& m6 Y) h* d) r5 s. c  \8 Z) g1 a
    }
    0 e8 M0 ^0 m# Z$ v
    6 A& N' {6 l+ c$ k2 v1 r% J5 Jint main(){/ A0 i1 l7 j0 P7 V
    1 _( ~% W$ a; A6 |: _
    char a[10];$ ]! b  ]0 Z( a( E  K7 |2 z9 w9 e& v( t+ M
    char b[10];6 x& L* J' j  q: N- @
    char c[20];9 x0 Q# D$ r! f
    gets(a);- g) h( `0 [4 o7 r7 P$ z( J
    printf("输入的集合A是\n");4 A/ `8 N8 w7 A2 y* {0 }
    puts(a);3 G6 _( ]# E' w0 g

    2 ]8 J% c% ]) ?gets(b);0 R. W& _4 P$ N# @
    printf("输入的集合B是\n");
    # q9 _! C0 Y* z( P: g5 ~. U' bputs(b);. P- R: F7 z% |# ?# p. _* a9 k

    3 K0 l8 P% q/ Y& t! J4 g6 U2 AUnion(a,b,c);
    3 S- v' K' i7 R6 B9 mprintf("last得到集合C是\n");6 Q# u+ h6 ?6 k- C% V
    puts(c);  h/ a) O; P: z
    return 0;
    ' _2 D* R- D# X0 r0 A}
    0 @2 F' m* ~& M' O
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    ' W) C, f9 T: F8 Q3 x! u+ p% q" _) L#include<stdio.h># u; L/ G8 L) d: k0 F

    & u5 I3 H- |" J- d5 q! h! y9 x$ ^# H  f  struct node" C8 U, p, k9 \5 G) f( ~9 X* A; x
    {, H9 A& b4 w1 X) s. ?& F5 h
            int data;, G# [# D4 L* _- L6 |5 O) P- M0 @
            struct node *next;% ^* H) o) _8 j$ d
    };* g9 u) m& Q- H  _0 f: ?
    //typedef struct node NODETYPE;
    . O( M! o! D& |( W' _. Cvoid main(); ]0 B, z. K$ r1 }  D5 ]* E6 R$ v& q
    {
    . K7 ?+ |+ o. f* v  T, a, B( {# u        //NODETYPE
      J2 x& i% S( I2 E, {        node a,b,c,*h,*p;
      d4 v# {3 W8 c0 s1 C        a.data=10;b.data=20;c.data=30;
    * k" M; x  g; e+ C$ ^* C" H        h=&a;' H' ?, p" h% @4 X
            a.next=&b;b.next=&c;c.next='\0';5 c* s& D% N2 R2 E" E, g- a
            p=h;
    % i  I: F. z! e/ O        while(p)0 l0 I, H1 |9 B2 F2 h2 {
            {4 H5 q  Z* p$ ?; P' U2 ]6 l
                    printf("%d  ",p->data);$ d% d+ x7 ^1 E& @2 I9 _; F
                    p=p->next;
    & K# n  s. U. ~0 k) V* _        }% c  }/ y7 D: X) I- `2 B5 T' k8 r- X: }6 m
            printf("\n");
    7 ~5 m# m0 j+ f+ p8 d/ U" p) O}
    ' r1 K: {$ L! }4 y3 W9 c2 X3 d
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:  n5 j0 j4 ]: I! E' v' Z
    #include<stdio.h>
    - K+ ^2 ~6 v" V# \#include<stdlib.h>
    4 M* k* [' G7 q6 A% gstruct slist. w5 c8 B, X* X0 ^- A, C" s$ u
    {2 ?/ J( p8 u: C) v8 k6 c; g) m6 u
            int data;: f( A8 r2 M8 r' e
            struct slist *next;
    ! Q! L& A8 S( b& F; o};
    3 v5 k, A2 Z3 b% u  ctypedef struct slist SLIST;9 E) T9 s  J* {$ x5 }; Y; F
    SLIST *creat_slist1()2 N( {- \0 v# Z5 y1 v3 j
    {/ {$ [+ o/ Y0 b" v0 _& B2 U
            int c;
    6 D4 {2 F) {, j4 B& M( j        SLIST *h,*s,*r;: M& P9 C- b9 n' r9 V
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    * X) C+ a  j, t$ n/ \2 G3 L        r=h;
    7 |$ W" F9 Q& x! m4 y        scanf("%d",&c);/ E9 y2 ?4 T& o7 ~2 l
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    8 p. B7 L1 W3 O# B. G7 F$ E# R        {
      o: `! }, G" W1 Y# z+ @                s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点5 h9 `' ]+ L7 s# }
                    s->data=c;
    . W! m* I" ~" W" e                r->next=s;. u4 D. r6 K% D; k( H# D
                    r=s;
    0 s0 q* j! f4 a                scanf("%d",&c);
    0 ]/ [- z  x9 m+ t0 t( G         
    8 S- M- e! P. d% h        }
    6 ]$ X' ?9 m0 v  H5 [& b        r->next ='\0';/ s: Z& ]6 w0 {2 q( m. M( ]  n7 [
            return h;
    * ?* F( d; V, G6 r- ?}, h. [. {4 C; R
    2 B  N6 w7 B1 s6 f
    /*& ~: E4 Z, J- ^6 G" c
    printf_list(&head); m/ @$ R& @- Q
    {        SLIST *h,*s,*r;% G: V+ j: X. z1 b8 V+ v" k
            int c;
    7 o3 q. H2 O9 {7 J        h=(SLIST *)malloc (sizeof(SLIST) );
    , x$ D$ j9 w! f6 D& A4 n  n: d9 Y* z        r=h;
    , ]' V! D4 M$ U; f) O- i$ B, y  R% |        s->data=c;+ Q  ?! z+ F! T
            //scanf("%d",&c);( Z) {. w8 Z+ P, X
            while (c!=-1)
    $ B7 t) Y3 }) x3 o" D        {
    * K& ~) `4 ?' |* z8 e/ J% P                printf("%d",c);
    5 t! \; o+ ~2 S; f6 p, y                s=(SLIST *)malloc(sizeof(SLIST) );
    - h7 f9 g/ x! h& ]3 z8 H" _2 [                s->data=c;
    $ M* z6 X1 o2 t# x+ p' S                r->next=s;+ E  J! n7 o" O7 N& T/ R3 f
                    r=s;! ]5 t. y; {: U' _( ^/ |( w+ n, {
                    0 j" {  H/ c2 q
             
    8 q# f- l( z' @% f+ A% l- m        }- i) L2 s3 ^' F, g) V# P- D. c
            r->next ='\0';
    " T. L: s4 l* w: M$ d* Y( F        return h;
    + i" R% }: W) P4 m8 W' Z! |}
      n# \7 I8 n. g0 V*/
    9 w& R8 c. y8 @4 avoid main()
    $ I2 R7 y' W3 R{ SLIST *head;" m2 f) s" Y1 c9 Z
    ( G$ N! }1 t0 a' ?
    head=creat_slist1();                //调用链表建立函数,得到头结点地址) j  i. N" k* e) B- Z) O; d/ M3 V
    printf_list(head)
    ! [7 j# C2 T& m& @5 N+ \7 v  L}
    ; y5 X$ u" c! u: q. c: d3 l
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    1 g$ @) E) v/ P' \5 J1 H0 I% X7 |9 @/ {: B
    #include<stdio.h>. b7 t8 E0 H. z0 |! X7 J& P
    #include<stdlib.h>
    3 E0 M8 u4 Z  e, \9 l+ g & M- S( l, L- g) r  z) c% o% h
    struct slist
    / ^. t3 I. x+ d0 f% e  {
    $ w3 D. r$ s* L6 A  int data;
    ; N5 ~5 \- e: a" N+ m  struct slist *next;) b" H  u- q; N6 k4 ~" D: V
      };
    : G# i: [( j; M! v1 v  typedef struct slist SLIST;
    " Y5 T1 P+ Q5 ~* x% H& |0 X
    * R1 C+ e) G- _0 S: ~ SLIST *creat_slist1()
    " e0 y" u! G" X  {
    : T4 ]# K, C- P  int c;  x* `/ f( J  U6 C  i# L
      SLIST *h,*s,*r;
    ) U$ N# ]* _/ G  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点5 Y; X8 Z2 {- o$ N6 ^- P
    r=h;
    8 [9 e2 }. H- B! f$ P9 V+ p  scanf("%d",&c);# x4 t% ]5 n% [- O
      while (c!=-1) //当输入的c为-1时,代表输入结束
    / z( N2 n, `3 t& T( h+ \; p& U* i{% ]. _" e* S( o; L) T- z8 `
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点
    ( _$ T" r& K" s; _* Y) Z  Ps->data=c;0 B3 k9 q( R0 Y9 r- I, L% H" x* E- S8 `
      r->next=s;! Q* j1 A% B$ z" t" m
      r=s;- q: z2 K( ]7 U% p5 u) b
      scanf("%d",&c);
    ) |# l! \1 K7 k- r( `) N# D/ `! ^
    7 {# w- C' j- T1 j$ }$ w. i2 U) {}
    9 t/ n/ [7 S. B9 q$ G2 e- y7 Y. v  r->next ='\0';
    - R: h# |2 S5 h" G  o  return h;0 h& y1 \( X* ]6 K  x" ]
      }' y& ?8 x% w# Y2 L+ o, D1 B; I! c
    + U8 V; k: z% J! j) g2 d
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?# d( s# U- D; Q7 Z5 {
    int printf_list(SLIST *h)
    & ~& Q6 C0 h, v  Y  {
    9 E4 l, X( c. j& ^' [  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚" C* M6 j* g6 [3 H& b/ g8 X
    while (h->next!=0 )8 e! R5 ^, U* U; D$ y( t$ r/ W
      {% H8 U0 }" e# z6 o. d
      printf("%d\n",h->next->data );( U0 Y/ R- k$ W: g. y' R
      h=h->next ;6 D+ |7 c9 K1 z# p
      }2 M* j9 M" K# Y* S, W1 A1 b; T
      return 1;
    7 I* K" s/ x: @4 B  }( \" ~, ]) l' O0 Y; F' O+ C
      /**/
    ! b/ c$ k; ]% R, s) O void main()
      _0 q/ E1 K) I6 M+ J  { SLIST *head;
    + b/ h( s$ |& N+ l! V 4 p2 ?4 t' Y; V6 }) z
    head=creat_slist1(); //调用链表建立函数,得到头结点地址
    9 D, W& R: I: C5 iprintf_list(head);
    # H% Y3 ~& I' B; |5 b: T  }
    ! S# Z+ M0 u2 b: }1 A' Z( I0 \6 x7 X/ ]2 O0 f# J) T/ k4 B

    $ j6 |1 F7 N& e* v$ @: z此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-6-3 16:34 , Processed in 0.547255 second(s), 83 queries .

    回顶部