专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅
假设在一个单链表中存在2个连续结点p、q(其中p为q的直接前驱),若我们需要在p、q之间插入一个新结点s,那么我们必须先为s分配空间并赋值,然后使p的链域存储s的地址,s的链域存储q的地址即可。(p->link=s;s->link=q),这样就完成了插入操作。  下例是应用插入算法的一个例子:#include <stdio.h>#include <malloc.h>#include <string.h>#define n 10 typedef struct node{ char name[20]; struct node *link;}stud;stud [阅读全文] [PDF]
建立了一个单链表之后,如果要进行一些如插入、删除等操作该怎么办?所以还须掌握一些单链表的基本算法,来实现这些操作。单链表的基本运算包括:查找、插入和删除。下面我们就一一介绍这三种基本运算的算法,并结合我们建立单链表的例子写出相应的程序。  1、查找  对单链表进行查找的思路为:对单链表的结点依次扫描,检测其数据域是否是我们所要查好的值,若是返回该结点的指针,否则返回null。  因为在单链表的链域中包含了后继结点的存储地址,所以当我们实现的时候,只要知道该单链表的头指针,即可依次对每个结点的数据域进行检测。   以下是应用查找算法的一个例子:#includ [阅读全文] [PDF]
对于已建立的链表,通过头指针可访问整个链表,输出链表中所有结点,统计链表结点个数及插入、删除结点。 下面以刚才建立的单链表为例进行分析,给出相应操作的实现函数。 注意两点: (1)将链表传递进函数,只需将链表头指针传递进函数。函数的形参对应实参头指针。 (2)对链表的访问用条件循环控制,循环的条件是结点的指针域非空。 1.输出链表中所有结点 voidprint(structlinklist*head)/*输出链表所有结点*/ {structlinklist*P; p=head;/*P指向链表第一个结点*/ while(p!=NULL) {printf(”%d”, [阅读全文] [PDF]
1 共3条 分1页