写一个算法:删除单链表中自第i个元素起的loungth个元素

要简单的算法,代码不要太多。谢谢了!(希望有数据结构的高手能加我,空闲时指导一下,拜托了!)... 要简单的算法,代码不要太多。谢谢了!(希望有数据结构的高手能加我,空闲时指导一下,拜托了!) 展开
 我来答
百度网友a487fea
2010-04-11 · 超过13用户采纳过TA的回答
知道答主
回答量:27
采纳率:0%
帮助的人:0
展开全部
typedef struct _LNode
{
int data;
struct _LNode *next;
}LNode, *LinkList;

void DelNodes(LinkList head, int i, int k)
{
if(i>0 && k>0)
{
LNode *pre = head, *start = head->next, *last;
while((NULL != start) && (--i > 0))
{
pre = start;
start = start->next;
}
if(NULL == start)//个数小于i
return;
last = start;
while((NULL != last) && (--k > 0))
last = last->next;
if(NULL == last)//不足k个
return;
last = last->next;
//删除start至last之前的k个结点
pre->next = last;
while(start != last)
{
LNode *del = start;
start = start->next;
free(del);
}
}
}
sunjun0622
2010-04-15 · 超过18用户采纳过TA的回答
知道答主
回答量:112
采纳率:0%
帮助的人:60.6万
展开全部
Status ListDelete_L(LinkList&l,int i,ElemType &e)
{//在带头结点的单链线性表L中,删除第i个元素,并由e返回其值
p=L;j=0;
while(p->next && j<i-1)
{//寻找第i个结点,并令p指向其前驱
p=p->next;++j;}
if(!(p->next)||j>i-1)
return error; //删除位置不和理
q=p->next; //删除并释放结点
p->next=q->next;
e=q->data; free(q);
return OK;
}//ListDelete_L
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式