QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2408|回复: 6
打印 上一主题 下一主题

数据结构,清华 严蔚敏,例题代码(自己写的,持续更新中)

[复制链接]
字体大小: 正常 放大
慢跑20 实名认证       

60

主题

8

听众

3684

积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    跳转到指定楼层
    #
    发表于 2014-3-10 21:34 |只看该作者 |正序浏览
    |招呼Ta 关注Ta
    本帖最后由 慢跑20 于 2014-3-10 21:38 编辑
    . ~+ \! v% ?1 x' @7 t' |2 d+ v7 w* [7 O( [
    计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。% ~' |3 A0 [; V0 H' G; O% _/ s
    刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。; {( R, c0 `( s& }4 ^4 f
    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题讨论群组

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。
    ! w9 n3 g4 z& D+ n+ n" ]! r" t( h2 N- |8 ~: {
    #include<stdio.h>
    ' L. [3 u7 g, G: U4 J! Q% ~ #include<stdlib.h>
    # J. ]5 _. I% A, h- P( [# \) }+ k , [0 j. M( @, W/ V7 j
    struct slist
    2 y2 R$ s9 N0 u6 M* n0 L$ g  {" b" @9 x/ y6 k7 e4 X
      int data;
    9 J0 T3 |0 ?# s" o  struct slist *next;
    ( |# M' A% e+ s, f% B: e  };
    / m0 h0 o" h3 Y1 p9 e/ f' ]  s  typedef struct slist SLIST;, @8 K2 {. e# b+ z: L* K7 l7 A
    : V' r7 E, L( ~! t; L& ^
    SLIST *creat_slist1()
    8 c: x! G0 r2 m* m$ t  {
    ! h  K6 c' l, _- V4 L* `  int c;1 _0 I3 w/ F) P0 u$ ^
      SLIST *h,*s,*r;& V6 u  T" Y$ y" d
      h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点0 L3 Q1 l1 @; m& ~" c' t
    r=h;' L" w+ j. b' `! M7 G5 f: P$ |
      scanf("%d",&c);
    * x/ H6 R! b9 q0 y3 K7 \  while (c!=-1) //当输入的c为-1时,代表输入结束
    # N& J9 O& m  Y! W" q$ ?( I! \, K{& U$ \. f+ Q  U2 X5 j9 N- Y
    s=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点* g: h2 {* Q2 ?: V# L
    s->data=c;& s+ ^9 n2 S* J* i$ J0 g* g2 l
      r->next=s;* J# m) H! f4 e* J# H/ m# C
      r=s;
    5 r8 t3 k7 p" r  scanf("%d",&c);
    , b8 z, \. q8 W : a; w0 w( s- C8 E% k+ y
    }
    0 M- l9 R) V8 w6 Z5 ^+ Q. Y8 g$ E  r->next ='\0';
      Z9 A  ]5 i+ v' b$ k9 e% B  return h;3 Z5 G4 V, O8 Y1 B' F$ j
      }
    . A2 L  R, h! v2 U $ C3 s1 ]% m; N" |
    /**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    , U4 ^0 H0 T% K8 T# i# aint printf_list(SLIST *h)
    % n, B( p; r  \  K# d% Y  {
    4 n! q& k* s. }6 U( a9 P  n+ d  //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚
    + O8 ~! z, X6 i6 ]3 O4 T while (h->next!=0 )$ L8 T3 y4 Z( T' N$ y
      {  W9 Y% ~6 f0 a) s. f& p" C& [
      printf("%d\n",h->next->data );, x+ Q4 i* {; D
      h=h->next ;3 B+ J4 a/ ]2 M5 j( k
      }
    2 p* T1 Q- a2 R' f7 c6 i# |2 X  return 1;
    0 O6 k- Z& E4 b  }  w  M+ l( W( z, k7 G# P9 d5 T. I
      /**/
    2 B0 M7 i) ~+ j0 W, o: d% O void main()" e7 r" Q4 Q. e6 ~% Z: j
      { SLIST *head;
    + E6 c* A( \# z9 S
    0 ]" x" B- g" O1 E% Z! L, }2 zhead=creat_slist1(); //调用链表建立函数,得到头结点地址
    * T* R4 B: p% I3 N  h" iprintf_list(head);
    : a0 h1 x# \  W% C9 Z  }: z; |1 A2 o  [
    ! \4 P# x$ ~$ X5 n

    . c; |6 K6 b  o7 Z& `2 l/ C+ k此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    此代码为生成一个链表的代码:
    # z1 n' y) I. Y6 _#include<stdio.h>
    - `( \, X9 G3 c4 N' k; f+ I1 }- E5 G#include<stdlib.h>
    $ |8 x( Y7 l7 f6 b2 ?struct slist0 \2 J9 H8 I& y; v6 q4 z, R
    {7 f4 ~2 ?- S7 o) G+ U# E' g: k+ D& Y
            int data;
    ' q; h, ]( G; V6 H        struct slist *next;3 W, R# a$ A5 J$ q9 Y) {) P
    }; 8 b: o' q# z! x" G7 [8 v
    typedef struct slist SLIST;3 b. |! i/ b8 p1 ^
    SLIST *creat_slist1()' ?/ ~# O( G* _0 v6 l% R8 B
    {$ q2 u: k# E0 ?2 z2 k$ n; B6 D
            int c;% N3 q. r' \; w% f
            SLIST *h,*s,*r;. r# D- T" L  ^( E' F
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点' Y" v. u, a) K% B' C
            r=h;
    % Q% ~  K2 c: F/ b5 T* `        scanf("%d",&c);
    7 O4 V  P* S, w$ H) B        while (c!=-1)                                        //当输入的c为-1时,代表输入结束
    5 @! G( x; C9 q( r& B        {: d  `0 w) ~1 ~; W0 r$ `1 k
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点9 l. k) f; i/ }0 j
                    s->data=c;; Y+ T% a- q0 {/ f
                    r->next=s;
    . T# }9 Y+ E( \                r=s;
    ( G* Y6 C) _, _- M3 F* v6 ]                scanf("%d",&c);
    8 r: T1 A. U* h         2 `/ Q9 `" E$ Z0 F" r  K
            }+ A$ [: \) l: j- j$ Z2 G5 D1 q7 p
            r->next ='\0';
    " F% u6 l- x- n* u6 z) I, X        return h;
    ! k& [4 y- n$ |" o& }: f! R}
    / O3 L; ~" h: E7 g6 ^7 q5 Z, g* n8 `0 V$ s" f/ l
    /*. }, x- z9 R! Y7 I- X
    printf_list(&head)
    1 j/ h" x& \7 D; E{        SLIST *h,*s,*r;* R. |- d: ]5 w( j. W) ^
            int c;) x' _4 E2 @( L9 l1 h8 `7 C; ~
            h=(SLIST *)malloc (sizeof(SLIST) );, `0 B9 M( l6 \, J9 A1 C
            r=h;
    * ]" F4 e5 C8 _# q' N" U        s->data=c;
    & H: @  r) x. P! s: q- f        //scanf("%d",&c);
    6 A% F3 x8 [( x7 Y  y/ u4 K. @! T        while (c!=-1)8 l+ H1 D9 ~" R7 `  f
            {
    " a' [9 g9 S7 ?, W+ ?* w8 K) c2 c                printf("%d",c);
    " D# {, d+ ~2 g- D                s=(SLIST *)malloc(sizeof(SLIST) );3 {& N- ]: b5 V- p0 K( X1 L* X
                    s->data=c;
    : H5 A$ {; x, o                r->next=s;
    * a+ h. I9 }1 ]! _* b                r=s;
    + S8 v0 V8 a! K) Q                5 K1 {9 ]0 }+ p( y0 g$ ]
             
    3 x0 r* |; i, I; ?/ P+ t        }9 E, x$ ~1 R! d( K( I" G0 B* p
            r->next ='\0';# s& e! s! |9 n/ ~
            return h;- [3 h7 D* p4 \7 U
    }
    . [. F$ k# S) O3 [9 C* E*/
    , _0 l+ n& \: Z/ b( x0 G- T: gvoid main()
    + {& M; b& c3 e7 K2 L# Q{ SLIST *head;2 J8 r7 j1 v+ W8 R

    5 l0 F& A" q! e" s& xhead=creat_slist1();                //调用链表建立函数,得到头结点地址9 D( y3 v. m/ _/ ?# B& X
    printf_list(head)
      s7 M" [9 \2 v3 ?8 J2 v+ F, d. h}
    " e  E' ^" m" B6 x
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组2014年美赛冲刺培训

    群组物联网工程师考试

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

    群组物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:" ~. Q" g! n' F8 W6 d
    #include<stdio.h>" z! q  l/ Y/ ?( ?

    + `) D7 S  Z$ V  struct node
    - g; e$ a0 |. n1 \% u{: b9 @& @- A0 K8 v
            int data;
    ' h9 l' A% c. L0 V- j1 O' L9 @        struct node *next;7 q, {  |# v- h+ |) g) J0 p
    };
    1 s! G# s3 r' T' t- P  p//typedef struct node NODETYPE;! P+ g- k9 D: H
    void main()- C, y( x1 r7 y+ C. w) w
    {: L4 w9 [4 [- V" ^
            //NODETYPE
    ( }$ G3 g7 c* g/ D        node a,b,c,*h,*p;; P# B# \0 ]/ K
            a.data=10;b.data=20;c.data=30;! _2 D7 p0 P  p( O7 a8 y$ O1 G
            h=&a;, o; l9 `, y7 C2 @
            a.next=&b;b.next=&c;c.next='\0';. \; i9 q& n% ~: T
            p=h;& @, p% @* K* Z) Y: K% R5 u0 V$ d
            while(p)
    + y9 [: w( J- o4 ~        {
    ! o/ C$ [7 t1 J2 s6 e9 N4 s2 b                printf("%d  ",p->data);
    , `6 X& e" F, e* V9 N% `8 m1 T                p=p->next;
    8 Z$ ]) ?4 {( B# K6 `' N        }! p; M, E7 j6 _! [  p" u9 J3 D8 b. R
            printf("\n");/ Y5 B$ [% ?* z
    }" r% t, b. I7 m2 ^' L# K/ m
    . ^$ L* ]7 v. v; b& m
    这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑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 编辑 " D+ ?, u  G# d! i. F$ S: e8 U

    ; P6 T4 U& O* r; fli2.1yong用指针:6 _$ `+ L" E" Q/ G% b
    * y# [+ [7 h: o& e& U4 K  Y9 H
    #include "stdio.h"2 w/ b* y' ^+ y. g/ e: @0 [
    #include "string.h"! P8 i) ~/ C5 N
    void Union(char *a,char *b,char *c)3 B4 a! [5 H& e- B! J4 K. v8 @- b
    {
    + h" Q7 U* ]' Q% Y$ r+ R( p) W# r7 Ichar *p=a;5 i/ P9 ]( D, S7 S. c# w3 x1 c
    char *q=b;: Z3 n4 i* `; x
    char *r=c;5 v. K& z7 q. R. r
    while(*p) *r++=*p++;
    ( Q# z( {5 d1 T( B* ap=a;
    0 I3 _$ y) l! k1 x% }for(  ;*q!=0 ; q++,p=a  )2 t4 ]' x0 {+ l1 D
    {while(*p)- Y, t# }; _& Z) a
    if(*q==*p){q++;p=a;}
    , q* Q7 S) w( h8 Celse p++;
    / s& T3 X) H  n5 u0 J( s$ S*r=*q;
    " {3 W$ i! `& v" @; M, ~- U* f( ~r++;
    ' s. f9 M" u/ V, y% R7 P}; c; W2 y- O+ Q% w% ]2 K" T, U
    *r=0;% }9 v- b0 T% }# K. p. S& O, `

    7 {+ B7 I' E7 O9 t/ @}! x9 Z" V% u& q. j1 i" A
    - k4 ^2 g0 }/ h9 t" Y$ x' i1 `
    int main(){$ v) [1 }+ }9 {% m: i, e+ L
    1 l2 Z3 \! q4 y, O  s
    char a[10];
    & v/ x: c3 M% `* }8 G4 l. Ochar b[10];/ @3 Q% x3 p" r4 b% R" I# b
    char c[20];$ ~# E0 Y  t, E  g
    gets(a);7 K6 q: F" x8 u3 V9 t
    printf("输入的集合A是\n");
    $ ~2 F# m/ R# N" }! J0 T$ [5 Wputs(a);
    4 M8 G2 p- G: B$ G
    4 D; P/ L  P) g$ z3 [gets(b);" Z5 k* p  K3 f: f( P
    printf("输入的集合B是\n");3 I5 c6 C  X& z* _! U1 x
    puts(b);
    " h/ U+ {" d. o% }" D1 ^! R! Q- S- W, l9 m8 s. u4 j
    Union(a,b,c);
    : G, C3 o6 k' `6 N8 E- Hprintf("last得到集合C是\n");- e5 F0 c' J1 ]- M
    puts(c);
    , z' I( U+ I) o4 j* _1 ^( sreturn 0;4 J0 @" A# H: s) a1 W' G2 z
    }1 a1 b9 K4 E9 z- L% U& F
    回复

    使用道具 举报

    慢跑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集合。
    ) K9 ]7 z; H( u2 G, [2 w: G这个代码是用数组的、算是比较简单的。
    & G- J8 I! x; l5 C
      R6 c$ Z- u. [3 q#include<stdio.h>6 u, A# i# f; E7 m3 [
    int L_length(char []);: f4 s1 d: Z6 N
    int main(){, d- P9 `% d7 u3 g4 J' j9 \3 [' o
            void Union(char [],char [],char []);
    ! I/ l6 G# V3 ~: f  D6 ]7 i' j- }4 o! K' i' E7 y
            char a[10];
    5 u2 x* z  c4 ^* [8 |2 }, l        char b[10];
    ; M% Q/ L4 ]9 {) n! n! A        char c[20];. @/ _/ J) r/ x/ a/ j! @4 c0 R
            gets(a);
    7 a' t8 `3 s! A" l' J        printf("输入的集合A是\n");
    6 w7 r* P3 o) _# s% i        puts(a);
    ; E' \! D9 g8 D* @4 v5 _
    1 g; ^$ x. G& q* \# t        gets(b);/ x( y# N6 H+ d5 h& L+ e
            printf("输入的集合B是\n");
    2 m  g9 E& G+ j        puts(b);
    . w" C; B$ H( I; s6 }2 A& ]
    5 b( l; v3 D9 v4 z  b        Union( a, b, c);& n( t- m" x' X
            printf("last得到集合C是\n");4 x& {- X/ v* P; V0 ?7 q9 b. d8 \9 _
            puts(c);) D0 U* g1 o* n1 P& w
            return 0;+ q  m" Q; p. K3 p% h
    }6 k/ V0 U: Y* j+ H4 W  Z

    # Z% _, l: I' u& m2 F2 q  Mvoid Union(char a[],char b[],char c[])
    & g4 J8 c  [& {0 Q{
      x% H: }# k& Y7 M: a        int flag=1,t=0,i,j,m,n;
    $ O8 s2 Q* E- Q% P        m=L_length(b);. S, I4 j2 t& q7 w- O6 d
            n=L_length(a);
    9 Q8 v7 N0 ]4 i7 _        for(j=0;j<n;j++)
    4 c# X' I* d* l/ p& X! D        c[j]=a[j];
    ) w4 b% |  C6 s% n        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    ( H  c9 j( V) X+ {, o                {for(j=0;j<n;j++)/ o- S$ ]9 O) [8 v5 V
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    8 N: l+ k  `3 _/ T                        if(flag) {  c[n+t]=b[i];t++        ;}+ d8 {" `- S( q* }! a" G" Z
                    }1 ?. H6 V) u3 l# z$ j5 N. ~5 S) V' b
            c[n+t]='\0';
    * F  h; H( @6 q) q+ E + Y9 Y* n# M% k$ c3 @
    }2 {0 i6 P3 c; ~. n. I

    " Y, V1 g! M) B6 ~* q/ sint L_length(char a[])
    % \. y9 I/ S$ Y/ h  e+ y: h9 }" n8 u' E{. b+ Z' ^; J  e$ |
            int i,t=0;;$ ~/ {4 a& }8 x, r( x0 D+ h8 {
            for(i=0; a[i]!='\0';i++  )
    - j$ N% r9 U$ Z2 x) ]' e1 t                        t++;6 y( s6 Q/ S( L. x  f! }
            return t;% X7 a8 K8 ]( E$ H. u
    } 3 G8 d: ]: V- W5 o/ V

    # A# g4 u% p. m1 Y4 M. `; n
    回复

    使用道具 举报

    慢跑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, 2026-7-19 17:50 , Processed in 0.473431 second(s), 85 queries .

    回顶部