线性表-链表(三)
来源:互联网 发布:pro tools mac 破解版 编辑:程序博客网 时间:2024/06/04 17:50
一、单链表基本操作
(1)清空单链表
while(L->next){ p=L->next; L->next=p->next; free(p); }
分析:p 指向L的 next 域,L的 next域 在指向 p 的 next 域(p=L->next),其实就是L指向了 L 的 next 的 next 域.然后清空 p
不断循环,知道 L->next == NULL
(2)销毁单链表
while(L){ p=L->next; free(L); L=p;}
(3)单链表判断是否为空
if(L->next==NULL) return TRUE;else return FALSE;
(4)求单链表的表长
int ListLength(LinkList L){ p=L->next; i=0; while(p){ i++; p=p->next; } return i;}
(5)单链表中如何查找元素
p=L->next; i=1; while(p && p->data!=e){ p=p->next; i++; } if(p){ return i; } else{ return 0; }
分析:从第一个结点开始搜索,搜索成功,返回位序;否则,返回0
二、逆序建立单链表
分析:
- 建立一个带头结点的空单链表
- 输入数据元素ai,建立新结点p,并把p插入在头结点之后成为第一个结点。
- 重复执行第2步,直到完成单链表的建立。
代码如下:
void CreateList_N(LinkList &L, int n) { // 逆序输入 n 个数据元素,建立带头结点的单链表 L = (LinkList) malloc (sizeof (LNode)); L->next = NULL; for (i = 1; i <=n; i++) { p = (LinkList) malloc (sizeof (LNode)); scanf(&p->data); // 输入元素值 p->next = L->next; L->next = p; // 插入 }
三、顺序建立单链表
分析:
- 建立一个带头结点的空单链表
- 输入数据元素ai,建立新结点,并把其插入在尾结点p之后成为最后一个结点
- 重复执行第2步,直到完成单链表的建立
代码如下:
L = (LinkList) malloc (sizeof (LNode));L->next = NULL; p=L;for(i=1;i<=n;i++){ q=(LinkList)malloc(sizeof(LNode)); scanf(&q->data); q->next=p->next; p->next=q; p=q;}
0 0
- 线性表-链表(三)
- (三)线性表菜单
- 数据结构——线性表(三)
- 大话数据结构(三)线性表
- 数据结构看书笔记(三)--线性表
- 大话数据结构读书笔记(三)-线性表
- 数据结构浅析(三):线性表
- 线性表基础知识(三)
- 线性表(三)
- 数据结构(三)线性表
- 三.线性表
- 链表(线性表)
- 线性表(链表)
- 特殊线性表(三)串
- 数据结构三之线性表
- 广义线性模型(三)
- 模式识别(三):线性判别函数
- 数据结构与算法专题之线性表——链表(三)循环链表
- Oracle 数据库 scn 与 checkpoint 知识点
- 2014年省赛选拔组队系列赛4
- ANTLR和StringTemplate实例:自动生成单元测试类
- hihoCoder 1066 : 无间道之并查集
- Python的Threading多线程处理(IO密集型处理)
- 线性表-链表(三)
- 我的疑问:编译程序和操作系统到底是什么关系???
- vs2010中编译zint的问题
- 很遗憾,您上传的资源snooper_taoism_0.0.4.4(beta)-2015-05-01因资源违规没有通过审核,如有疑问,请联系webmaster@csdn.net
- 关于访问权限修饰符
- Leetcode难度表及解题汇总
- 我的疑问:到底什么是交叉编译???
- FTP命令
- 软件外包之行情