链表的c语言实现(三)

链表的c语言实现(三),第1张

链表的c语言实现(三),第2张

二、单链表的基本操作

建立单链表后,如果想做一些插入、删除等操作,应该怎么做?因此,需要掌握单链表的一些基本算法来实现这些操作。单链表的基本操作包括:查找、插入和删除。下面就逐一介绍这三种基本运算的算法,并以建立单链表为例编写相应的程序。
1。Search
搜索单链表的思路是:依次扫描单链表的节点,检查它们的数据字段是否是我们要检查的值。如果是,返回节点的指针,否则返回NULL。
由于单链表的链域包含了后续节点的存储地址,所以我们在实现的时候,只要知道单链表的头指针,就可以依次检测每个节点的数据域。
下面是一个应用查找算法的例子:
# include
# include
# include/*头文件包含一些字符串处理函数*/
#define N 10

typedef结构节点
{
char name[20];
struct node * link;
}梭哈;

Stud * creat(int n) /*构建链表的函数*/
{
stud *p,*h,* s;
int I;
if((h =(stud *)malloc(sizeof(stud)))= = null)
{
printf("无法分配内存空!");
退出(0);
}
h--> name[0]= ' \ 0 ';
h-> link = NULL;
p = h;
for(I = 0;I {
if((s =(stud *)malloc(sizeof(stud)))= = null)
{
printf("无法分配内存空!");
退出(0);
}
p-> link = s;
printf("请输入%d人的姓名",I 1);
scanf("%s ",s-> name);
s-> link = NULL;
p = s;
}
return(h);
}

Stud * search(stud *h,char *x) /*函数查找链表,其中h指针是链表的头指针,x指针是要查找的人的名字*/
{
stud * p;/*当前指针,指向要与搜索名称进行比较的节点*/
char * y;/*保存节点数据字段中名称的指针*/
p = h-> link;
while(p!= NULL)
{
y = p-> name;
if(strcmp(y,x)==0) /*将数据字段中的名称与要查找的名称进行比较,如果相同,则返回0,即条件成立*/
return(p);/*返回要查找的节点的地址*/
else p = p-> link;
}
if(p = = null)
printf("找不到数据!");
}

main()
{
int number;
char full name[20];
stud *head,* searchpoint/*head是头指针,searchpoint是存放合格节点地址的指针*/
number = N;
head = creat(number);
printf("请输入您要找的人的名字:");
scanf("%s ",全名);
searchpoint=search(head,full name);/*调用查找函数并将结果赋给searchpoint指针*/
}


位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 链表的c语言实现(三)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情