a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 70|回复: 2

[C语言] 2011年计算机等级考试二级C辅导实例编程(17)

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
 单链表冒牌排序  今天做链表排序有个误区,就是以为交换的时候要连next节点也交换,还要固定head节点,想了很久也没做出来,但是后来看网上的提示,才知道只要交换节点内的数据就可以了,根本不用交换next节点
# _' A, i' i5 v1 E: E  01 #include 6 }- h, }' B" G  z+ p$ T7 {
  02 #include
' Y: D0 B. A! ]4 H  032 ^3 v  X- |6 H! Z' H# S
  04 struct node8 ]/ P' j* F  k% o" {) X8 [* v" h  H
  05 {
( c" W7 m: N0 q! N# v/ P  06 int data;, a. q3 H& e: e* Z
  07 struct node *next;7 D2 D/ B, e+ m  S( `
  08 };" i3 j, Q+ C; W0 l5 O( ?/ y2 _
  09
3 Y+ m6 R2 m" K( m  10 struct node *create_list(int a[],int len)4 j' m+ ]7 D) J8 @- ]3 N( s
  11 {
# d" g1 X) ~& e% `: \  12 struct node *phead;! I, r, S+ _$ h# U+ p& v
  13 struct node *ptr;  I% o8 }4 i. L6 p
  14 struct node *pre;
6 H( u4 @' E; n; R* i' x$ B  15 phead=(struct node *)malloc(sizeof(struct node));
/ a- g* @1 H2 `  16 int i=0;; y$ j6 K1 K5 p; A
  17 phead->data=a;
+ u0 j/ B+ ]$ d  18 phead->next=NULL;
0 t, ~# @- ~- |: k# h" z, W" }  19 ptr=phead->next;
/ Q6 r' o3 K% `9 H- N% L% k  20 pre=phead;
" K5 g8 X! V% W
2 Z  y  d4 P; w6 B/ G- T3 ]  21 for(i=1;i
回复

使用道具 举报

 楼主| 发表于 2012-7-31 21:48:09 | 显示全部楼层

2011年计算机等级考试二级C辅导实例编程(17)

  22 {   23 ptr=(struct node *)malloc(sizeof(struct node));' c. D7 x+ l" l; F7 X1 m
  24 ptr->data=a;
) q9 F! ~: Y) U# V0 }( v( X  25 ptr->next=NULL;3 F/ M1 }, y) s, c$ \
  26 pre->next=ptr;
2 J8 ~' |  }9 y1 @) W( F4 C  27 ptr=ptr->next;
- e1 `+ h: p( O  28 pre=pre->next;% D% G4 l7 s& Z3 V3 X
  29 }4 I2 E; Q( r4 q1 j
  30( t" b; ~( D: n1 h  c
  31 return phead;
5 l4 x1 T# c- M) C  32 }) h0 G- \( c: u  M  q, Q
  33
' R. F+ m4 g% S, X3 I$ {8 y* ^  34 void print_list(struct node *phead)0 O, \' h, s' [5 b5 t- W
  35 {: K% ~# u, Z6 Z5 ]
  36 struct node *ptr=phead;& `; o! P3 O4 p4 @
  37
# _. O" n! `3 Q' ]  38 while(ptr != NULL)
& G/ s& Z: ?4 y0 B  39 {
7 H/ M, q3 V# @9 C  40 printf("%d ",ptr->data);6 {  _- b2 A4 p" s  J0 P
  41 ptr=ptr->next;
9 q( @) }6 I* K, F$ e  42 }. u8 q! t( O. n# V0 x
  434 m" x% b6 I% n
  44 printf("\n");
% v, C' T( S" O1 n8 Y0 x; w  45 }
* c4 R7 y. K/ `6 P1 I  46$ }! g0 g0 Z+ A4 V3 g" N; G
  47 struct node *bubble(struct node *phead,int len)# u6 P( c& r. l- D' m4 J6 C
  48 {* h. G; o& M. N4 m+ R
  49 struct node *ptr,*next;- l% @+ F" z8 S! t* o
  50 int temp;
* D% V6 T( L2 j5 T8 T! V0 S3 \  51
% @) }! _% R8 i  52 for(int i=0;inext;( c8 m5 y+ F/ @( k. X
  56 for(int j=len-i-1;j>0;j--)  v1 F) e0 I! @* J8 z
  57 {$ S9 r7 j; k+ k6 m
  58 if(ptr->data > next->data)
! ~9 _" u! h8 y1 ~9 b  59 {
# r( h  U2 X6 i  60 temp=ptr->data;
5 a/ C% Q1 M- B8 j+ Z  61 ptr->data=next->data;
) b0 ^& H4 C+ P, i  62 next->data=temp;
" Q; c3 Q/ r; g8 |% d* z  63 }6 P: ?; ]7 |) v" s7 `7 z6 o
  64 ptr=ptr->next;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-31 21:48:10 | 显示全部楼层

2011年计算机等级考试二级C辅导实例编程(17)

65 next=next->next;  66 }
3 Y5 B$ L7 k! h$ c, w& q0 v  67 }1 M; p1 ?' {. j' m
  68
+ q! _  ~0 S6 P. k  69 return phead;
8 T/ s, [8 c/ Z3 p+ ?  70 }
( {# q+ a" B  q, w" e# `9 D" }  71" h  d" u4 Y/ N
  72 int main()
* Q6 l# t  F8 P/ ?  73 {  {- ?! b5 D& Z& ^. W8 N
  74 int a[10]={' m- b' C  r5 j: R- s6 H0 [
  75 5,3,6,8,9,6,5,4,2,7
" I1 U  F! i+ Y  76 };% k* Q! E5 I9 C) L4 ]# ?5 K4 k
  77( c4 @: ?, K6 w8 i
  78 struct node *phead;: w: Z; ^) K- a( U! {  d9 N
  79 phead=create_list(a,10);; [* {! ^& ]& ]% l$ l
  80
9 c$ _7 x! I9 s8 u* t; p  81 print_list(phead);
% a" f* Z( v- j  820 t  C$ H& ?1 b5 c+ p4 ^
  83 phead=bubble(phead,10);
0 b7 h" L8 B' g; i( G  84
7 J) q' P/ ]: x' Y! T0 s  85 print_list(phead);/ ?! i  Y* j$ J- D) H& s
  86 }
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-16 04:30 , Processed in 0.245614 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表