是一个数据结构的问题:写出删除单链表中值为K的结点的算法(是完整的代码哦),我会会好好加分的

 我来答
shiguang077
2014-12-31 · 超过40用户采纳过TA的回答
知道小有建树答主
回答量:81
采纳率:0%
帮助的人:49万
展开全部
链表的存储结构的定义
typedef struct LNode {
ElemType data;    // 数据域
struct Lnode *next; // 指针域 (因为指针域指向的结点的类型就是struct Lnode)
} LNode, *LinkList;
LinkList L; // L 为单链表的头指针

//删除第i个结点
Status Delete(LinkList L, ElemType e,int i){
int j = 1;
LinkList p,q;
p = L->next; ///指向单链表第一个结点

///遍历寻找第i个结点
while( p && j < i){
p = p->next;
j++;
}
if( !p || j > i ){
return ERROR;
}

///j等于i时
q = p->next;
p->next = q->next;
e = q->data;
free(q);

return OK;
}

free的作用就是让系统回收一个Node结点,释放内存。(应该是回收i结点所占据的内存空间)

推荐你一个学习数据结构的好的博客吧。http://www.nowamagic.net/librarys/veda/detail/2222
追问
你这写的是删除第i个结点的算法吧,我的要求是:删除值为K的结点的算法,而不是第几个结点的算法
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式