C++外接循环创建单链表
void LinkList::Init(LNode *L){
L = new LNode;
L->next =NULL;
}
void LinkList::LNodeCreat(LNode *L,int date)
{
LNode *p;
p = new LNode;
p->data = date;
L->next =p;
L = p;
L->next =NULL;
}
这两个函数是在下面这个循环内调用
while(!(fins->eof()))
{
getline(*fins,str1);
n1 = atoi(str1.c_str());
List.LNodeCreat(L,n1);
count++;
}
一开始就初始化了,为什么调试的时候显示的是红色字体错误,
错误信息为 : 0xC0000005: Access Violation.
求帮忙解决问题啊!
没有全代码自己不能调试,不知道具体原因。。。不过问一下while循环里的 List.LNodeCreat(L,n1);这个L是什么数据类型,我感觉是不是应该写成 List.LNodeCreat(&L,n1);取地址符。 我修改了方法,先把str中的值赋给一个数组,然后在void LinkList::LNodeCreat(LNode *L,int date[],int count)内循环赋值。
还有一个问题就是我在这个函数里面调用单链表
void Diary::Show_Diary(string Account)//日记日期列表
{
。。。。。
List.LNodeCreat(L,n,count);//n为数组
List.SortList(L,count);
List.PrintList(L);
List.ClearList(L);
。。。。。
}
在这个函数里调用删除方法,但是错了。
void Diary::Delete_Diary(string FileName)
{
。。。。。
List.DeleteDate(L,count_diary,n);//n为要删除的数据
。。。。。
}
另外定义了全局变量 LNode *L = NULL;
void LinkList::DeleteDate(LNode * L,int count,int date)
{
int j = 1;
LNode *p,*q;
int str;
p = L;
while(p->next->data != date&& j<count)//这里出错.还未进入循环.
{
p = p->next;
++j;
}
q = p->next;
p->next = q->next;
str = q->data;
free(q);
}
我改成引用的也不行。Debug下是p->next的值是0x00000000,data跟next都是没有被赋值.
0xC0000005: Access Violation.错误信息 指针赋值错了,你自己好好检查一下。 elvo 发表于 2014-5-27 13:28 static/image/common/back.gif
没有全代码自己不能调试,不知道具体原因。。。不过问一下while循环里的 List.LNodeCreat(L,n1);这个L是什么 ...
我现在又改方法了,而且糊里糊涂改好了- -。。。。嘿嘿 ~~~
页:
[1]