在单链表中要删除某一指定的节点,必须找到该节点的

 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
匿名用户
2015-07-02
展开全部
int dellinklist(Linklist L,int x)
{
Linklist p=L->next,q=L,s;
while(p!=NULL)
{
if(p->data==x)
{
s=p->next;
q->next=p->next

free(p);
p=s;
}
else
{
q=p;
p=p->next;
}
return 1;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哎呀池子啊
2019-05-14
知道答主
回答量:1
采纳率:0%
帮助的人:744
展开全部
直接前驱结点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shihoumacili
高粉答主

2016-02-02 · 每个回答都超有意思的
知道大有可为答主
回答量:1.1万
采纳率:87%
帮助的人:489万
展开全部
实现代码如下:

1、线性表的顺序表示时
Status ListInsert(SqList * L, int i, ElemType e)
{//在L的第i个位置之前插入新的数据元素e,L的长度加1
ElemType * newbase, * q, * p;
if (i<1 || i>(* L).length+1)//i值不合法
{
return ERROR;
}
if ((* L).length >= (* L).listsize)//当前存储空间已满,增加分配
{
if (!(newbase = (ElemType *)realloc((*L).elem,((* L).listsize+LIST_INCREMENT)*sizeof(ElemType))))
{
exit(OVERFLOW);//存储空间分配失败
}
(* L).elem = newbase;//新基址
(* L).listsize += LIST_INCREMENT;//增加存储容量

}
q = (* L).elem + i - 1;//q为插入位置
for (p=(* L).elem+(* L).length-1; p>=q; --p)//在插入位置的元素以及其后的元素后移
{
* (p+1) = * p;
}
* q = e;//插入e
++(* L).length;//表长增加1
return OK;
}

2、线性表的链式表示时
//在带头结点的单链表L的第i个位置之前插入元素e
Status ListInsert(LinkList L,int i,ElemType e)
{
int j = 0;
LinkList p = L,s;
while (p && j<i-1)//寻找第i-1个结点
{
p = p->next;
j++;
}
if (!p || j>i-1)//i<1或者>表长
{
return ERROR;
}
s = (LinkList)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;

return OK;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式