是一个数据结构的问题:写出删除单链表中值为K的结点的算法(是完整的代码哦),我会会好好加分的
1个回答
展开全部
链表的存储结构的定义
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
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的结点的算法,而不是第几个结点的算法
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询