QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2541|回复: 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 编辑
    4 A( {0 ?1 c6 G# |
    1 S9 @- m1 t6 e计算机基础课数据结构,清华严蔚敏这本书是公认的一本好书。
    ; X' ?! h4 M, e8 U2 k3 Y刚好这学期我们学习数据结构,想把一些例题的代码写一些、既提高了C语言的水平,又可以加深对数据结构的理解,为以后打下良好的基础。
    1 D" A5 [8 V5 ^' _
    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集合。8 [' U% P& D" Q* [
    这个代码是用数组的、算是比较简单的。
    5 q/ J: O9 r" o3 ^" A/ n( }
    . H& k9 H+ s4 y; s#include<stdio.h>
    : H) i8 }) `' O* H# ^! Y$ gint L_length(char []);
    7 F  y# Z7 ?) |% m( F% Kint main(){# t6 Z+ C; x9 @) W2 q  T- N
            void Union(char [],char [],char []);- }# ?- t/ b- D4 v. t, U3 h: L
    & {# s. W/ O+ t. x. E& h" Y
            char a[10];& W9 ?7 @; l9 E  w3 r+ y
            char b[10];
    ; f1 r3 t8 O& \- d        char c[20];
    $ k6 D. O( A9 k. q% h        gets(a);5 C5 l" e  @' s4 K6 e
            printf("输入的集合A是\n");
    ' \: C0 w. Z8 u        puts(a);' s. F+ a. p) h( R
    7 Z6 t; ], `+ ], `; J1 o
            gets(b);
    7 P2 L2 x6 S+ W        printf("输入的集合B是\n");0 H4 S+ ?# U8 k# V% f
            puts(b);4 ~3 e$ E( E3 V: P  M. f) l
    : q$ m* w5 g. }  J7 N) X+ K
            Union( a, b, c);
    , t* A" K# G, f+ i( {" ~- H        printf("last得到集合C是\n");
    " Y; j9 H3 S2 |7 c4 g% b        puts(c);; s6 g' k$ \5 R
            return 0;7 }7 |& }0 T, l  y( `& K0 K
    }
    0 Z2 I& y( O7 h
    & r* l) o! N7 q" nvoid Union(char a[],char b[],char c[])) O* P  I* }1 i
    {
      n& b# ]& i* `0 J        int flag=1,t=0,i,j,m,n;" o6 `7 _1 f8 S
            m=L_length(b);
    * |* T8 a+ w. i) h        n=L_length(a);! o2 r! p% x# s0 y4 B+ q+ h
            for(j=0;j<n;j++)3 H/ z: g2 j1 M. K
            c[j]=a[j];
    1 k) F: w+ G% V; e        for(i=0;i<m;i++,flag=1)                        //i为b数组的下标,m为数组个数;  j为a数组的下标,n为数组个数;
    + }4 {- J- `, Z6 P                {for(j=0;j<n;j++)2 ^$ E$ C/ G' z1 c
                            if(b[i]==a[j]) flag=0;//flag=0,说明有重复的了
    ! s: e8 `2 @, L3 s1 W                        if(flag) {  c[n+t]=b[i];t++        ;}* m3 b5 M0 `6 V! A) N0 d. W7 R
                    }
    5 P3 v( ^& l4 u$ W2 F* P% y        c[n+t]='\0';( T# v0 y6 @' `8 E6 T  o# J$ D! P
    3 K& ^8 `4 d" Z% r( z# k+ e
    }
    4 |0 Z) C0 y7 \( O" q$ u& Q  h# l- n$ n; K, \
    int L_length(char a[])
    1 v# X; ]6 r/ C( I: X, U3 ^{
    0 j$ Z  H" g) m- _/ A8 A5 j        int i,t=0;;. I- a8 b" S& j' ~) _+ A6 w
            for(i=0; a[i]!='\0';i++  )/ |' ~# `% r. S- _, Z8 u6 A* m
                            t++;# @9 ]* q9 D7 y+ Q9 l
            return t;
    3 N, `8 z" p0 `4 i7 N# S}
    ) I. @% K, p4 ~3 g( `* ^2 J/ R5 \( d: D) Z
    回复

    使用道具 举报

    慢跑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 编辑 . l& _" s/ r1 G( o" K
    ; H# x- L) X5 B4 T2 G  ?
    li2.1yong用指针:
    : T$ @7 M" i% Q; ]
    ( B' G/ r, g$ T9 h! z#include "stdio.h"
    ; m+ U) M' g! u0 R$ {$ e#include "string.h"5 y* ?; v0 q! A+ N: ?* ^6 @
    void Union(char *a,char *b,char *c)9 v6 `6 j/ F/ H  Q2 x  w
    {
    0 @& }! V1 W, m* j+ P$ rchar *p=a;
    " g! Z3 C; s1 E7 c; }char *q=b;9 ]$ o$ G/ _4 V& ^4 o4 T9 M. J* Y/ _
    char *r=c;
    5 \& a) x. r  Z% Z1 w5 R# o3 Dwhile(*p) *r++=*p++;
    ' R* p3 Q2 \3 o8 T* u+ Ap=a;
    ! o7 N8 T# q% C: ]* C" x4 ufor(  ;*q!=0 ; q++,p=a  )
    8 E0 X& x( W# s; {{while(*p)
    0 s! X9 C" K' p# M2 B# gif(*q==*p){q++;p=a;}
    + Z/ T2 {: S* U4 X* uelse p++;, I  ^& Q- L& }3 F/ \
    *r=*q;+ k# G) n1 ?! g+ `; `
    r++;
    7 M! A- j$ q+ B8 O8 m}+ c2 d& b/ ]! O; [! k; ~
    *r=0;0 h+ u0 P# A- o  ]. p
    2 ]2 u/ d6 R. [, f: r5 [0 `& \
    }
    6 e; Y/ l8 c$ G; d0 b$ C, N" a: N, T, O4 {6 `2 {
    int main(){
    0 y& V4 S0 I% q- Z, ?; x5 {/ i
    4 V6 Q# Z' _8 q1 w0 l* |char a[10];; l- h- y( |$ R" a. Y0 v6 r- \
    char b[10];8 V# _# w# X1 Y
    char c[20];! g" k1 @7 @  A- j4 a
    gets(a);- o8 X& S& \9 P6 @* a9 ?
    printf("输入的集合A是\n");# {- l; x7 ]2 C& D% b
    puts(a);0 x  r( t7 r7 t2 \, c* I
    . W$ B2 l4 d' g
    gets(b);/ S* C, o( k8 q* Q8 p+ E
    printf("输入的集合B是\n");
    6 `0 G! B: a6 o- Dputs(b);
    # Q( s* R5 J/ {$ U
    % T: ?6 w6 p. Z6 A3 a: tUnion(a,b,c);. ]7 s% N# Z( g# h# `
    printf("last得到集合C是\n");& v. o$ s/ Q$ U' x6 Q8 P
    puts(c);+ e! q+ ]+ m( O0 C; y
    return 0;
    " M) G3 C; Z: k" Z4 Y8 q}
    & X; a1 w  v' U+ K& h- ?
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    第2章最后开始用链表了,由于以前没有接触。这里要重新学习链表:( R, _" p/ f6 [/ h  e2 r5 p
    #include<stdio.h>
    $ C( D9 b1 w6 l  j/ Y! Z; w
    . Q% ~9 _9 W7 X- N& z  struct node
    % |" L( k. H$ R, s{2 Y3 C5 h1 Z) {, f( J! T
            int data;+ ~+ \. G$ `0 u3 J/ S" ~, C  h7 |$ @
            struct node *next;
    9 p" D& C/ @" j/ O};
    0 P0 Z& q/ j; F) I( X//typedef struct node NODETYPE;
    " X/ D% D+ h$ L. p; ?7 D2 g  x8 gvoid main()
    5 u2 C- K  C' [% h  m  Q0 ^& ~{
    7 q' ~2 V9 d* h0 A+ j! [- i        //NODETYPE% |& `  a8 o' g3 E. l
            node a,b,c,*h,*p;# T. M! h/ W) i2 o6 x  f; q
            a.data=10;b.data=20;c.data=30;; T5 T9 n9 {$ m7 C- F8 U& v) r2 Y
            h=&a;
    + ?8 ]. e3 ?6 F+ j& e* X% l* w        a.next=&b;b.next=&c;c.next='\0';7 X/ V5 b) a3 ^. L: r1 h
            p=h;5 {7 g# b% a6 u) u9 H! Z0 `
            while(p). H" U6 q6 r0 P7 m% u8 q
            {7 W% `" u( j' U) S
                    printf("%d  ",p->data);3 K$ y+ z0 o$ F  |" I0 P6 V
                    p=p->next;: m, o4 r  w# v3 ~& ~1 }
            }& _1 W3 A! V5 i( d" G4 W
            printf("\n");$ U! _, d0 h+ _( ~
    }* P& d. M4 b: t7 v  s

    . B- }+ S9 t; ~这是一个简单的链表。从这里可以了解规则
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    此代码为生成一个链表的代码:
    ! x3 V( h1 R: z8 ]! d#include<stdio.h>7 I2 \0 U2 [5 I  G& _
    #include<stdlib.h>
    % @. D& p" @# L: r# ^6 o' Zstruct slist1 b8 b" D9 A; z0 u, k
    {
    ( T) z% d8 _( O2 p- l5 W        int data;
    ' V9 D) K$ N% R, @/ u9 i        struct slist *next;- a4 N- ?! \1 J
    }; & v  k; F7 _1 E# d" d
    typedef struct slist SLIST;
    3 j" m. j: Y/ e. ]; ?SLIST *creat_slist1()% L' n4 k9 U- }1 ~9 c  b/ S
    {9 Z6 U2 @- k6 m$ Z  ^
            int c;
    # T3 w7 o, i6 ^. e        SLIST *h,*s,*r;7 P: B$ V8 X1 j/ i
            h=(SLIST *)malloc (sizeof(SLIST) );  //生成头结点
    + s3 a" e5 q7 S$ d+ E        r=h;
    6 K+ j# Q3 D2 V. F/ W0 i        scanf("%d",&c);
    . o) p: R- F! {, \0 o* e        while (c!=-1)                                        //当输入的c为-1时,代表输入结束3 x' K/ h4 {6 @8 S: B. y' U
            {% d8 Q; s2 ^4 k6 \" X2 d. b
                    s=(SLIST *)malloc(sizeof(SLIST) );  //生成一个新结点
    ; \9 e+ g# G2 A. W+ K  I                s->data=c;
    . H6 w: C5 {" [' j8 p! Q, D7 |                r->next=s;
    * `0 F9 U* ~! M2 n8 G5 J9 D                r=s;8 g( l9 w/ f3 V: }9 j- Z2 T
                    scanf("%d",&c);
    3 S7 _- R. `- T7 ^) S; [         1 p5 I( Q5 x4 ?( W! a+ Q- F
            }8 m; l/ p) M/ p# E
            r->next ='\0';: s2 u2 I' U( B, v7 e+ R$ j4 j; @
            return h;
    : q$ `$ y! ^" T7 V9 P' M& w0 B}
    ; H' k* U3 o4 m
    : i1 z0 L" P7 `7 A/*
    / K$ Y, ^( _" g! [; l7 yprintf_list(&head)5 E* ~$ _  _, X! K" j9 i1 v9 I
    {        SLIST *h,*s,*r;
    1 x: M. @9 k$ r# N  p6 d7 {        int c;
    2 N& c& ^! n" V; p8 E9 r* p        h=(SLIST *)malloc (sizeof(SLIST) );' [2 x. z* r- C! j+ ~0 a5 U
            r=h;
    5 P: Z' `0 ^1 z3 f( ~+ H        s->data=c;
    ; [& E3 |' @; U! D! ?        //scanf("%d",&c);
    / R+ L4 m9 h9 X        while (c!=-1)9 V* R5 f$ d; ^5 T
            {/ N6 F- X( F' w2 k- T. w. v6 t
                    printf("%d",c);
    * e9 U. {% ^- I$ i- u! a5 {9 R8 M                s=(SLIST *)malloc(sizeof(SLIST) );
    8 b/ Z+ B2 s1 P/ K$ ?- A! Y                s->data=c;
    5 k- M0 E" J  o* G                r->next=s;
    3 n2 U# `: L9 \; \$ d                r=s;
    ' H) R# _4 Q! A0 e                - B* {- A* |8 J# r* \
             , M/ L! ?" F9 ]5 z, I% w
            }( t6 T6 ^: f8 g2 _" M
            r->next ='\0';
    2 n3 S3 u% |* E+ p% \        return h;- ^) Q) u8 K2 M" L1 s) E
    }4 [5 Z5 f+ b8 l) L
    */
    , j3 t; D" `/ h( Wvoid main()3 U7 d2 Q! U5 ~& k
    { SLIST *head;# B# W/ q  e3 q
    & e- B5 B$ [5 @
    head=creat_slist1();                //调用链表建立函数,得到头结点地址
    + d6 H7 [0 `! a2 S) }: n% j' fprintf_list(head)
    4 ^! R8 }" g( s}
    ) x2 d7 Y' X/ q2 \# y% l
    回复

    使用道具 举报

    慢跑20 实名认证       

    60

    主题

    8

    听众

    3684

    积分

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

    [LV.8]以坛为家I

    群组: 2014年美赛冲刺培训

    群组: 物联网工程师考试

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

    群组: 物联网工程师培训

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

    2。4节需要用链表计算多项式的加法,因此,熟悉结构体是非常必要的。# Y5 }& ]' N8 M, F

    : t- |2 G6 m; T#include<stdio.h>
    8 A. ^7 {9 o6 J% c5 d0 Y" R3 O- O #include<stdlib.h>
    $ ]# f; o$ e; N4 |2 P
    & @- c3 o! J+ r% p! \& u4 V) u struct slist6 p4 c# Y- |* S4 Y4 R" W! j
      {
    ; I$ W9 A; L5 [1 ]  int data;1 X! _, M# W" S0 K# j
      struct slist *next;
    % d. x1 n) d2 f7 k  };3 \, m/ P' D- @& J7 l$ p/ M0 \
      typedef struct slist SLIST;
    ) s2 N* O1 r# _$ U, O) ?
      T6 L, ^$ G5 Q; E* E SLIST *creat_slist1()
    2 A' L: Y/ B3 u% E/ Z  {
    1 Q/ A$ O! H5 o$ k' j3 ?  int c;- e; ?7 C. E; g" b
      SLIST *h,*s,*r;
    . _! |& ]/ |- t  h=(SLIST *)malloc (sizeof(SLIST) ); //生成头结点5 z% p9 `& F- Y$ f( p$ P, W
    r=h;: T2 o1 A' I0 C$ ^$ v
      scanf("%d",&c);! {' j0 g& |( Z6 Y+ n: M( k+ k
      while (c!=-1) //当输入的c为-1时,代表输入结束
    , i  H8 Y3 @. I' H{
    0 X! s$ |) d/ ?5 S0 E/ A# ds=(SLIST *)malloc(sizeof(SLIST) ); //生成一个新结点0 `6 `' ?* O3 R  k/ y
    s->data=c;* l& H  r8 j$ K: T8 \( @
      r->next=s;
    - ?' P) |. ~; s/ u. p  N  r=s;# I# r7 r+ B6 F+ \( |1 K
      scanf("%d",&c);9 n* d/ n( Q3 u  m% q3 ~8 I1 W; Q
    % w4 L# U( C% W" s6 c  W4 \. ]
    }+ E# N+ C4 r) Z( Y4 N8 j& H: b
      r->next ='\0';
    # v0 L3 ~0 O# u# |+ F  return h;7 B+ h) i# g2 u! [: _" L* ]
      }4 k4 X& o: e$ o2 E: E; b/ S

    " \! d. H- a3 O" ~/**/  //想加入一个函数,在刚才输入链表各个数值之后,再输出这些值。如何写呢?
    , S3 J( q% `, y9 ~0 ]int printf_list(SLIST *h)
    ' m# M, ]/ L9 c, }9 Q5 V  {4 G$ [4 k- ]1 K; o
      //while (!h->next )//教材上经常使用这个语句作为h->next是否为空指针的判断语句,但在VC++里边,这一句与下边一句效果不同,具体原因还不清楚8 M0 p$ d: X4 c, [
    while (h->next!=0 )
    $ j! o- q$ z  N6 n  {
    ; |/ Y, p/ U4 {3 S/ r4 i  printf("%d\n",h->next->data );
    7 Q/ |! B9 B2 f  h=h->next ;
    / l% k) d( N2 W1 s1 V: X7 p  }2 J4 Q0 K) p# a! @; ^9 }' h5 A
      return 1;; c9 b, A1 g, T- T# j
      }" U# b" J; z$ @! D8 n
      /**/9 ~! @1 s& J# e( E- x
    void main()5 q6 s& C4 w' s' \2 ?$ [" T( p
      { SLIST *head;9 l: S8 ~% T8 N" K  o2 V) J% z- w

    " T/ H( x% I5 |( bhead=creat_slist1(); //调用链表建立函数,得到头结点地址
    2 a* ?- P( p/ V! \" rprintf_list(head);
    0 f/ Q# S) s5 A  }
    " n" {5 S3 d9 o1 S
    % ]) G2 M1 k9 w1 P' j: N
    4 v% p0 d1 H- R# U- j此函数功能为:输入链表中的数,然后依次输出。
    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-10-29 02:52 , Processed in 0.478755 second(s), 89 queries .

    回顶部