(3)判断、求长度、输出单链表、球元素、按值查找(3)_第1页
(3)判断、求长度、输出单链表、球元素、按值查找(3)_第2页
(3)判断、求长度、输出单链表、球元素、按值查找(3)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.判断线性表是否为空表:若单链表L没有数据结点,则返回真,否则返回假。 int ListEmpty (LinkList *L)5 3 v: W- |+ u+ D3 S! N& F 1 1 |0 r0 K. t2 W/ 0 o return (L-next=NULL);! A2 |Z2 2 ! o9 t7 J5 D; ? 我想这个没有什么好说的吧。本算法时间复杂度为O(1)。0 N6 l# ?& _/ Z* c) p/ w v w, L( 7 y+ I2.求单链表的长度:单链表的长度就是链表中数据结点的个数。# a A7 o9 A, ) Jx- k7 q1 3 | int ListLength (LinkList *L), s P1 N, |# e- W j; X) r! T; z 0 Y, ) i; l% T, O LinkList *p=L;& e6 + n, j2 ( M: v% d int i=0;) t& r. U( D/ _- l while (p-next !=NULL)- 0 j( x. V t6 J* ) N! z H! l. + E6 P i+;6 V P/ i9 6 V$ Z2 d1 y p=p-next;% ) 8 U* + k2 & P5 p% f! 6 a f* B: return ( i );0 d; |( k_# r( z2 y$ D ; A# l; Q6 x8 D- 4 W 该算法就是让 p 指向头结点,然后从头结点开始遍历整个链表,遇到数据域不为空的结点时,! 6 & 9 . D4 ?+ L 起到计数作用的 i 就加1,最后返回 i 。* u7 B0 x, R( l1 Z8 U v6 V) q9 V) R& Q; l6 , B1 3.输出单链表:该运算逐一扫描单链表L的每个数据结点,并显示各结点的数据域值。) + ? L: t4 n8 _& Y c; S void DispList (LinkList *L)8 c, GJ! u1 o* C6 I $ F! F1 e / s0 W G LinkList *p=L-next;# H$ Q 7 E$ L6 p ( v4 v while (p !=NULL). Z0 j B/ ! w( s B) O 8 # t: ) v% U. t printf (%c,p-data);1 H7 D+ mn4 j9 p=p-next;- G+ a3 G6 E- m?3 w. O9 I: V/ q6 . E6 m$ 3 A/ m3 F$ r/ z) S9 printf (n);9 ) + e, v0 j! m4 v3 o2 k $ V N( l1 e, W7 T 是不是觉得除了p-data 之外,其他的都和顺序表差不多啊,没错啦,本是同根生,8 i# T4 9 N, o2 O( E, ( o# o 相煎何太急。还有一点值得注意的,通过上面两个例子,大家应该能够发现出遍历一个5 G- h$ u- P) |5 i4 l A! Q5 单链表其实就是一个p=p-next;所以,以后碰到的话,可要很快能想到噢: o2 D C& ?2 G! R! / Q! m6 |+ E3 q! e( v( r( k4 |4.求单链表中某个数据元素的值:在单链表L中,从头结点开始找到第 i 个结点,若存在第 i 个数据结点,, C4 k C1 D0 l6 B: J/ z1 M! Z 则将其data域值赋给变量 e 。9 T n, A* U# j int GetElem (LinkList *L,int i,int &e)! b& 9 O- O9 N 1 ?9 W7 o5 W7 E- w int j=0;1 k1 S/ V$ I* r6 W r LinkList *p=L;% V. x5 ?% X& I while (jnext;$ C9 J) l/ b6 ! N! W7 I/ f 6 |8 & - z# E9 M, & W7 4 n if(p=NULL) / 不存在第 i 个数据结点t( X2 K3 G1 6 T$ p return 0;. H& N9 ! x c7 y( O* s. else / 存在第 i 个数据结点2 J% c b2 z, b& Q% H6 I+ ( w# H + q( |8 V: / o& ) M e=p-data;, L* t. F# k# C+ return 1;* z/ e6 + , S1 f$ M# P; : I2 h0 H) J $ 2 1 U& a, r, E 看着不短,其实不难。本质就是先对链表来一个不超过形参 i 的遍历,& x) E8 J0 X/ Z% 0 G 然后有数据的话就将data值赋给 e ,并返回1,否则,返回0。% y: W. % T, n3 R( L9 l+ L+ N# N, Q! B5.按元素值查找:在单链表L中从头开始查找第一个值域与 e 相等的结点,若存在这样的结点,8 q3 a* q- L w 返回位置,否则,返回0。9 q( , b4 $ s7 m* 0 P2 d. f int LocateElem (LinkList *L,int e)- r2 K+ r- K% x3 z5 A 4 W$ ?+ 3 b$ f: b E LinkList *p=L-next;3 V( z% H: b# , Y) _% Y# X+ B int i=1;7 o+ 5 - M; f3 while (p!=NULL & p-data!=e)! t2 2 2 K# P9 L 4 k; ; O: V3 J, k. v p=p-next;p$ B1 ) D: S i+;8 : T* w; v C/ 6 G: g , U4 5 * O# |1 / a if(p=NULL)2 ( ?$ A |0 Z3 P D% N return 0;. y f) L4 f z$ V n+ p else9 o* + B7 n3 dw$ m$ i return ( i );

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论