Chinaunix
标题:
vs2010下写个单链表的操作出现了错误,求大神指导
[打印本页]
作者:
myzonesky
时间:
2013-10-08 16:39
标题:
vs2010下写个单链表的操作出现了错误,求大神指导
本帖最后由 myzonesky 于 2013-10-08 16:39 编辑
typedef int Status;
typedef char ElemType;
typedef struct Node
{
ElemType data;
struct Node * next;
} Node;
typedef struct Node* LinkList;
复制代码
Status ListDelElem( LinkList *L, unsigned int n, ElemType *e)
{
LinkList p = *L;
Node* q ;
int j = 0;
while( p->next != NULL && j < n )//找到第n个节点之前的那个节点,然后删掉第n个节点
{
p = p->next;
j++;
}
if ( p->next == NULL || j > n )
return ERROR;
q = p->next;
if ( q->next == NULL )
{
*e = q->data;
p->next = NULL;
free(q);
}
else
{
*e = q->data;
p->next = q->next;
free(q);
q = NULL;
return OK;
}
}
复制代码
在调试到free(q)时,出现以下问题
QQ截图20131008163821.png
(26.3 KB, 下载次数: 29)
下载附件
2013-10-08 16:38 上传
作者:
kdkgod
时间:
2013-10-08 17:05
代码都不全,让别人怎么查,谁知道你的q是在哪new的,还是根本就不是new出来的。
作者:
mfkp3
时间:
2013-10-08 20:25
while循环是让p指向第n-1个节点么? 怎么感觉是指向了n+1的节点。
作者:
fender0107401
时间:
2013-10-09 08:41
这种基础问题自己搞定。。。
作者:
Love_for_Live
时间:
2013-10-09 10:43
应该是内存管理错误!你自己看看。。。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2