链表的C语言实现之单链表的查找运算

链表的C语言实现之单链表的查找运算,第1张

链表的C语言实现之单链表的查找运算,第2张

建立单链表后,如果想做一些插入、删除等操作,应该怎么做?因此,需要掌握单链表的一些基本算法来实现这些操作。单链表的基本操作包括:查找、插入和删除。下面就逐一介绍这三种基本运算的算法,并以建立单链表为例编写相应的程序。

1.发现

搜索单链表的思路是:依次扫描单链表的节点,检查它的数据字段是否是我们要检查的值。如果是,返回节点的指针,否则返回NULL。

因为单链表的链域包含了后续节点的存储地址,所以我们在实现的时候,只要知道单链表的头指针,就可以依次检测出每个节点的数据域。

以下是应用搜索算法的示例:

# include < stdio . h >
# include < malloc . h >
# include < string . h >/*包含一些字符串处理函数的头文件*/
# define n10
typedef结构节点

结构节点* 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 < n;++)
{
if((s =(stud *)malloc(sizeof(stud)))= = null)
{
printf(" memory空无法分配!");
退出(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条评论

发表评论

提供最优质的资源集合

立即查看 了解详情