QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2079|回复: 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 编辑
    + h2 }4 C9 c% E6 ^$ e$ H& H
    , g) ?& o2 \. V; n) ?  H' C" `+ [计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    7 \% V: u- t, ~  H- y. }: G$ o* K7 B2 j刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    ! ^  h! e1 O9 }5 m; n# ^
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    8#
    无效楼层,该帖已经被删除
    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    3 Y& v8 Z! F; ~( N: B! e* R6 T" K
    #include<stdio.h>
    8 ]5 D3 f, t+ o( Y/ M# O% @+ J0 p #include<stdlib.h>
    ( b4 _; }* |4 B8 n1 `% R
    1 t3 W7 C" ]+ [2 U2 E+ J struct slist& z5 w& O9 F! W1 v+ V) C1 O& C
      {$ W7 c! u4 c# m7 F# a8 O) m2 w* U: ^
      int data;
    ' d  Y- w4 l: c2 ^" A  struct slist *next;0 S" V$ n- _* V& q% I. r. w
      };5 d- L# q" i2 |$ n' t
      typedef struct slist SLIST;
    & B$ U; e$ M$ |- w5 L
    5 l/ N) i" B( a2 k4 v SLIST *creat_slist1()' F% P  f" t+ t8 Y5 A* e, z6 }7 p
      {
    8 T4 `/ n6 F- X2 G6 h( \  int c;
    5 T9 d) V% c) Y0 t  SLIST *h,*s,*r;
    - Y1 H" p# J5 q: R* a# y. j4 k2 W  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点
    & L9 _3 N) r. b( X' C9 E  B7 Tr=h;% t1 G7 |4 b3 X7 |
      scanf("%d",&c);
    ! n5 x' T# y$ Q! m3 K9 n  while (c!=-1) //当输入的c为-1时,代表输入结束! v) T- s/ G# k; \9 m1 y5 v6 Z  s8 T* Y) M
    {+ Z4 x$ r4 T  p+ O4 T- ?
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点) t1 U( p- y3 ^+ B0 b
    s->data=c;  R2 F5 i2 |) H* j
      r->next=s;
    + A" s0 X8 d; J9 {4 D$ n  r=s;5 V( @5 f2 c0 D
      scanf("%d",&c);! B/ r. l; i2 F0 }! X4 @3 w- g

    ! f, P1 S5 @7 H$ h4 y  y; `3 O}6 ?$ V( O: m) U, a9 S( ^
      r->next ='\0';
    2 k2 @) d6 X! S/ T: }  return h;# |- ]& G7 r, p, f9 J* j
      }
    1 [/ E! x# `7 K/ Q
    + \0 i4 I; E6 g! ^* Z: G) P9 _/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    ) _+ Q1 R, n/ O6 Y" O9 w8 vint printf_list(SLIST *h)9 X  a* K# |: m& ~
      {
    2 L# O$ s" v' J. O2 k3 K. A) ?  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    * o, }" j6 R( X  q while (h->next!=0 )6 X- d; m# Q' [7 C" F1 y
      {
    : E( \  q" O0 A7 y  printf("%d\n",h->next->data );
    3 w/ U! R$ h, W3 T5 L0 s$ _  h=h->next ;" m2 b( R% `  r$ x
      }
    ( W3 J: A1 _9 Y9 V3 R4 M  return 1;
    - W3 N2 b# g& Q9 j" g8 e  }
    , l) t$ N: F% R; J9 L; A% O6 v* B  /**/
    % a$ @, d1 P- h8 D/ H void main()( x( _- Y) v$ F6 ?$ ]
      { SLIST *head;
    7 P; _; S' d  a" N- L' D$ B3 L : O+ u( u- c9 a" O' z. L9 ^4 F
    head=creat_slist1(); //调用链表建立函数,得到头结点地址4 V" u0 i0 [& L  L. E3 {
    printf_list(head);
    + F5 @- u; U/ r, E9 W  }# N/ A8 B- G# P, j4 y! Z5 O

    * e5 {4 [6 Q8 u# }3 u8 s6 c9 G: A" Q" T2 T4 Y
    此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    # r2 W' P1 n% C#include<stdio.h>
    . `" B* A! g4 ?#include<stdlib.h>
    & R4 D8 ]% R0 ^- I5 X+ nstruct slist
    7 E- n! K9 u+ n  d- ~' I{* @) d- A, ~' r: R* _, d* p
            int data;
    . B( i8 f, V+ K" o6 J# J! k0 R        struct slist *next;
    " |6 z, G9 ~, H7 X, K( f1 j}; 8 w+ I& r4 j: g# @% p2 j
    typedef struct slist SLIST;& q7 p0 `  a6 T4 X' r- [: i, n
    SLIST *creat_slist1()
    8 O" q4 n  F1 j{
    ) K; K9 a2 w* c6 M/ Q: W        int c;
    # Y3 ^; t" {0 u% {5 G        SLIST *h,*s,*r;7 h# {2 c: D2 [" J8 k* D0 b
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点) U. l  \2 h: G3 N
            r=h;- e% [# X6 ^; K
            scanf("%d",&c);  L5 C9 M( ?2 S5 b6 r
            while (c!=-1)                                        //当输入的c为-1时,代表输入结束! q2 `% ~3 ]& F" e5 z+ M, A
            {' \0 w& P7 h' K; a1 i. P
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点2 \) X: I( F# n. ]4 s
                    s->data=c;2 m; J4 d) o4 {
                    r->next=s;9 z3 Y" k! E: z* A4 L
                    r=s;4 s7 E, F$ O5 U# d% T
                    scanf("%d",&c);
    # W# i/ b: c. a0 w$ t) B         4 [# K! I0 Q3 [2 ?3 a1 i
            }, U+ X* U: y6 k
            r->next ='\0';
    " F$ w0 e; l  s# m3 }        return h;0 G1 r2 C4 i4 y+ m& U' x, G
    }
    & G1 v2 H6 k% ^/ f* x& H* ^; u* u# q" }' \7 \
    /*
    ' I; ~. k4 K# O' O2 W. ]printf_list(&head)( o8 a, z4 p6 Y# ^5 d
    {        SLIST *h,*s,*r;
    - E0 `2 X) C2 v6 h+ }        int c;
    7 r  g1 A$ i1 S. m5 z' d" t# _- E        h=(SLIST *)malloc (sizeof(SLIST) );) e( G, m; q* {6 }! p! V9 F' m! l: p
            r=h;
    4 c" H% C) n! w  R1 p; m        s->data=c;' }. P& ^% ]5 U& O+ J+ v
            //scanf("%d",&c);) Q# P; L' y  P4 J! @4 r* g: V
            while (c!=-1)
    ) m" o5 J3 Y  k7 z2 L) A        {
      y8 y0 {; H( H3 B4 r8 K8 b                printf("%d",c);
    ) [! @- N9 ~6 Y7 ]9 S. g' h                s=(SLIST *)malloc(sizeof(SLIST) );( a& A' L$ t5 A! s2 O, L. d
                    s->data=c;
    7 L" w$ z. d. S( Q; O$ O! i/ @9 I                r->next=s;7 N' F- D" V1 Z
                    r=s;; R# H/ _: J1 Z- ^7 g
                    * _% ^- |/ q' {3 }5 F0 t- y
             % J; C/ D/ p$ Y) ]
            }  p" u1 O8 C- h$ j3 r6 m) M
            r->next ='\0';" d, {5 N9 e- `  C( w/ e- K3 _
            return h;5 j9 K2 M9 F0 _3 ]0 N2 k
    }! h" @6 b; R7 [6 Q9 c
    */; w. R' g: {. k: ~1 H
    void main()! s0 C9 `3 k2 y( x0 E
    { SLIST *head;
    & h' T+ S, M# I! u
    & p0 h' @+ N( Lhead=creat_slist1();                //调用链表建立函数,得到头结点地址- z( N& @3 W  }# c8 C1 X2 D: {
    printf_list(head)
    6 i/ z* e* S& Y/ P+ _; p}/ Q. J/ l  t/ O/ @- Z+ T
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:
    ; ?0 T. L$ h3 t) `#include<stdio.h>
    7 k/ H. \% T0 \" r; Y; _. N& j  k% a; p; K
      struct node" R2 t% ~# f4 N' G; @9 L
    {
    % M) z1 _% R' x- o5 M" \        int data;% o& p2 P5 F8 Z
            struct node *next;& v( N( o' n$ E. \7 s9 {* N- N
    };
    $ E, }7 \" w+ e' @& _//typedef struct node NODETYPE;
    $ e- m3 S7 P, I" {  N6 Nvoid main()
    * J- U/ a4 {  N) q1 N) f- t{6 V: X8 N# b* j
            //NODETYPE7 H! D, a, y3 P0 E: A
            node a,b,c,*h,*p;
    - U/ q( {4 x& z' P4 y        a.data=10;b.data=20;c.data=30;6 D0 p* [& `$ ~8 e/ [2 a' b
            h=&a;
    - G2 a6 v# E; I        a.next=&b;b.next=&c;c.next='\0';' e. [3 a1 v. ?+ @
            p=h;
    : u7 o; {7 H2 B        while(p)/ L4 Z9 l! k: E, ^  m0 Q  F2 R. [
            {: m) D* g$ N' l) |7 z" a  C% E
                    printf("%d  ",p->data);( M; {) d9 w1 z6 V
                    p=p->next;
    3 V: B$ `1 S# o        }8 K* p# D% ~0 n+ |, Q& `$ y
            printf("\n");, c# _: z7 i' Y1 M. X: G+ z  a+ {
    }
    4 I: d( D0 h0 x  z( R0 v2 ^" _* V' U) n
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑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 编辑
    : l1 s: n4 s4 n* A/ Z" u2 z" w
    " p9 U! e* M1 B" \" H) v* bli2.1yong用指针:
    9 J4 a& M* k, D6 H: f8 A/ m+ v% Q$ h6 E' v0 C
    #include "stdio.h"
      h5 Y, _- R$ J#include "string.h"
    / g% T/ e0 j1 \void Union(char *a,char *b,char *c)
    * _$ w& D) m6 X$ U/ W* w{
    3 o4 _8 z4 W: h( q  bchar *p=a;
    0 ?( L7 D# u2 [  e0 Nchar *q=b;( w, K( A* a0 x
    char *r=c;% H% n6 ?: U  d% h( Z# v8 E' c
    while(*p) *r++=*p++;
    + c; E4 c3 o' {1 Zp=a;
    # ]8 V, J6 s/ n3 W( F" pfor(  ;*q!=0 ; q++,p=a  )
    - E! e# w. e: g3 r) A{while(*p)1 q# M: N( U/ D( V
    if(*q==*p){q++;p=a;}1 U1 F& U3 |3 a  n$ y* X/ V
    else p++;+ T& i% Y! ?0 {: j
    *r=*q;
    * Q: O: s( u4 v8 \/ ]3 E& Jr++;
    " o( q  O. c2 ^$ |! }; K}
    , _2 m1 [3 C( Q! h*r=0;
    3 K" z' H0 C9 S3 I- B1 d2 k( ^7 Q  d4 q0 Y  M4 x
    }( n7 S% n/ G  s% g% p2 q% K
    ( d8 ?* e  h6 k2 [: f, c
    int main(){7 I( z7 x9 Q' ]5 Z1 z# y1 \
    5 ?1 J" Q, f7 w4 I( S
    char a[10];
    + q4 K9 ^# U  A2 @! u, Gchar b[10];
    ! V4 R& u/ Y9 @* rchar c[20];
    ( Q. i, D9 v' Sgets(a);9 `9 x; x( ^4 S0 p6 p. `* N
    printf("输入的集合A是\n");
    4 f. ~  J. y9 O, z; M+ G9 {! Rputs(a);/ C( n2 w: J, u; ?  P" X, }
    ' G0 f( D4 I" z" ?5 J) H3 _9 c
    gets(b);
    9 i  }$ G3 L5 ^- ^7 ]3 p; g' z9 E+ wprintf("输入的集合B是\n");
    ) M3 m, {! X3 W; {& j/ |% {8 qputs(b);
    5 D& r% c, G/ A; r- r
    $ w( [. d7 C0 F, l$ i1 i5 e2 J0 IUnion(a,b,c);
    # X, L9 k7 e, D: g/ P' @& M9 {printf("last得到集合C是\n");* S1 G8 R3 m% y) @
    puts(c);
    ! I* O, D. |# {  yreturn 0;
    2 z5 a/ [  Y" v( g3 c7 X}
    , Y) J! {+ a3 L/ w! K+ W0 g. N
    回复

    使用道具 举报

    慢跑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集合。" k& A* ~) Z0 H9 O
    这个代码是用数组的、算是比较简单的。
    ) q( @/ B& v+ _5 F" T
    + X, s: V  S& h5 N! Q5 H#include<stdio.h>( \9 n# }# \9 L3 E: b
    int L_length(char []);" j' W) P4 \9 s! y
    int main(){
      ?9 {- {6 |4 Z8 k2 S        void Union(char [],char [],char []);; ?5 _* U5 V% d

    " h" J4 ^% m7 C7 J" n* t) R: J        char a[10];1 K$ ~8 ]( V% _( H- w+ t& Z/ t
            char b[10];' P% H( P4 W, G: ]
            char c[20];$ ~  U' a8 E8 Z
            gets(a);
    & G& Z8 |1 f+ w7 i        printf("输入的集合A是\n");
    * q- Z6 @4 Q- M1 U        puts(a);7 O9 u) e9 V  A6 f
    * H3 R$ ?6 A/ Q' b4 m" A" W0 Y
            gets(b);7 C$ I* G6 b2 p" t1 G1 `4 V
            printf("输入的集合B是\n");! X, u: ~( Y5 M3 J& t9 I# K0 {" H- i- D
            puts(b);
    0 i1 W  H3 e# d' |8 J0 O2 h! Y0 `- W& r+ [3 f
            Union( a, b, c);& |; o4 R5 l2 \+ S. W
            printf("last得到集合C是\n");' j: x. `/ e& Y. Z# H
            puts(c);
    $ e0 O6 r" A. G6 F, q  s9 }5 d        return 0;
    5 z& [* G) o! N}
    0 k) X# ~2 L9 W9 I1 ~! d
    4 e8 A" n. E% ?5 q8 F3 r! n' Qvoid Union(char a[],char b[],char c[])
    ( \5 O4 {5 U6 u; C3 L7 R" ]& x6 y6 P" D{
    " V' H& W. X' I1 Z7 I( K' _        int flag=1,t=0,i,j,m,n;
    % b, p- K* T2 q7 r1 t$ c        m=L_length(b);; t1 \; H7 s; b; T) {5 ^3 f5 @
            n=L_length(a);8 z. T) B$ N: \; [
            for(j=0;j<n;j++)1 C( B) @3 x/ {: T) Q  L3 t8 }' l
            c[j]=a[j];+ i/ o* L) Z" B+ y' Y9 w
            for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;+ m% q2 L+ w) X! ]
                    {for(j=0;j<n;j++)! U! I! h! K' L9 v; A
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    ; l' i. }; u9 D0 k                        if(flag) {  c[n+t]=b[i];t++        ;}
    . w% w$ {4 |; J7 R0 O. z% U                }
    # _- O  _' K! ~        c[n+t]='\0';
    . V. Z3 }7 r( ?7 e. @8 |" p( s/ K  X
    : Z- Z& d' ^* v& R# F9 k}+ e' [& @1 s! G: K1 g& ]

    2 A1 a3 q' F, i: R) x. Vint L_length(char a[])6 J# I. H$ I: z7 M# F- @
    {
    # r* i4 K" U9 q, @0 d4 V        int i,t=0;;# U! F2 ^$ J* Q5 H
            for(i=0; a[i]!='\0';i++  )
    % P3 [0 P7 D" u/ T$ m8 I                        t++;
    ( z% f$ Y) z6 }* a% {7 ]        return t;: K, J% r: V; \% e4 N
    } : B/ r  t0 [1 I( O9 K2 e
    8 f4 B- n1 }7 E+ R
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2025-7-7 04:01 , Processed in 0.575131 second(s), 86 queries .

    回顶部