c++链表的问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:41:50
下面的这个程序,在执行的delData这个函数的时候会出现指针的错误,我调试了半天,发现是CreatByUp这个函数出了问题,但是如果不执行delData这个函数的话就没有问题,完全实现按升值创建链表的功能。这个函数是我自己写的。但是如果换成书上的标准答案的话,在执行delData函数就没有任何问题。我仔细分析了一下我自己写的程序,并没有发现不合理的地方。请教各位高手,到底是哪里出了问题呢?在最下面是书上的标准答案(CreatByUp函数)
typedef struct Node
{
int data;
struct Node *link;
}LNode ,*Link;
#include<stdio.h>
#include<malloc.h>
void delData(LinkList &list,int dat)
{
LinkList p=list,q=NULL;
if(!p)
{
printf("链表已经为空!");
return;
}
if(p->data==dat)
{
q=list;

list=list->link;
free(q);
return;
}
while(p->link)
{
if((p->link->data)==dat)
{
q=p->link;
p->link=p->link->link;
free(q);
return;
}

p=p->link;
}
if(p->data==dat)
{
free(p);
}
printf("没有找到要删除的元素!");

}

vo

程序没有错误,运行也没错,不知道你怎么运行的.你的主程序有点小问题
delData(list,567);
p=list;//你少了这个,最好再加个printf("删除后的\n");
可以正确删除.

怎么今天大家都爱上链表了?