今天写链表时候遇到的问题,请高手解答一下

今天用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 ;
   }
  }
}

但是运行之后出现以下错误

请问是为什么

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值