今天用C语言写了一段单链表的函数,函数的功能是在已建立好的单链表上面查找目标结点。然后在目标结点后面添上新的结点,如果单链表本来不存在这个结点,就在链表末端添上新结点。
首先每个结点我是这样定义的
/* 定义结点 */
typedef struct node
{
int data ;
struct node* next ;
}linklist ;
然后通过下面的函数实现查找-插入点的功能
void insert(linklist *head , int x , int k )// k是目标点的data、x是新放入结点的data
{
linklist *p , *s ,*r ;
s = (linklist *)malloc(sizeof(linklist)) ;
s->data = x;
p = head->next ;
if( p == NULL )
{
head->next = s;
s->next = NULL ;
}
else
{
while((p)&&p->data!=k)
p = p->next ;
if(p == NULL) // 原链表没有要寻找的点
{
p->next = s;
s->next = NULL ;
}
if( p->data == k )// 原链表有要寻找的点
{
s->next = p->next;
p->next = s ;
}
}
}
但是运行之后出现以下错误
:
请问是为什么