我开始研究算法和数据结构。我决定尝试使用单向链表。它包含在所选元素之后插入元素,删除具有给定值的元素和返回已删除项目的数量的函数,函数返回列表和类的当前内容以在文件上写入和读取。功能上存在一个小问题,必须添加新元素。调试器返回以下错误:
AiSD.exe中0x00e71ea2的第一次机会异常:0xC0000005:访问冲突读取位置0x00000000。
AiSD.exe中0x00e71ea2处的未处理异常:0xC0000005:访问冲突读取位置0x00000000。
看起来像指针的问题,但我不知道如何解决它。它现在不是我的专长......但是!所以我请你帮帮我有一个代码: 的 的
的#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct Node
{
Node *next;
int key;
};
class List
{
public:
Node *head;
unsigned int counter;
List()
{
head = NULL;
counter = 0;
}
unsigned size(Node *p)
{
unsigned int c=0;
while(p)
{
c++;
p = p->next;
}
return c;
}
void Addafter(Node *e, int v)
{
Node *p = new Node;
p->next = e->next; //there's a problem
p->key = v;
e->next = p;
}
int Delete(int v)
{
Node *p = new Node;
int count = 0;
while(p->next != NULL)
{
if(p->key = v)
{
delete p;
count++;
return count;
}
}
}
void Write()
{
string data;
fstream file;
file.open("D:\\plik2.txt", ios::out);
Node *p = head;
while(p->next != NULL)
{
p = p->next;
int wartosc = p->key;
file<<wartosc;
}
file.close();
}
void Read()
{
string data;
fstream file;
file.open("D:\\plik.txt", ios::in);
Node *p = head;
for(int i=0; i<counter; i++)
{
getline(file, data);
int result = atoi(data.c_str());
p->key = result;
p = p->next;
}
file.close();
}
};
int main()
{
List a;
a.Read();
a.Addafter(a.head, 3);
a.Delete(5);
a.size(a.head);
system("PAUSE");
return 0;
}
的