所以我必须为我的项目创建一个链表来添加和乘以非常大的数字。布尔,我在创建链表时遇到问题。我必须得到一些输出,但我不能。而且我找不到问题。它不会给出错误,但我也无法获得任何输出。我已经与我能找到的链表示例进行了比较,但仍然找不到问题所在。
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
struct LLnode{
int data;
struct LLnode *next;
LLnode (int);
};
LLnode::LLnode(int value){
data = value;
next = NULL;
}
class LinkedList{
private:
LLnode *head, *tail, *temp;
public:
LinkedList(){
head = NULL;
tail = NULL;
}
~LinkedList();
void createLLnode(int value);
void display();
void addToHead(int value);
void deleteHead();
};
void LinkedList::createLLnode(int value){
temp -> data = value;
temp -> next = NULL;
if(head == NULL){
head = temp;
tail = temp;
temp = NULL;
}
else {
tail -> next = temp;
tail = temp;
}
};
void LinkedList::display(){
temp = head;
while(temp != NULL){
cout << temp->data << "n";
temp = temp -> next;
}
};
void LinkedList::addToHead(int value){
temp ->data = value;
temp -> next = head;
head = temp;
};
void LinkedList::deleteHead(){
temp = head;
head = head -> next;
delete temp;
};
int main(){
LinkedList* myList = new LinkedList();
myList->createLLnode(8);
myList->addToHead(12);
myList->display();
myList->deleteHead();
myList->display();
myList->addToHead(46);
myList->addToHead(17);
myList->display();
return 0;
}
LLnode *head, *tail, *temp;
都是指针。这对于head
和tail
很好,但是您似乎使用temp
错误,因为您从未为节点分配任何内存。
在函数void LinkedList::createLLnode(int value)
中,您将值分配给temp
,但不创建新对象。函数的第一行应为:
void LinkedList::createLLnode(int value) {
temp = new LLnode;
...
然后,在LinkedList
析构函数中,必须添加循环访问链表并delete
所有节点的代码。