问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
```c++
#ifndef LIST_H
#define LIST_H
#include
using namespace std;
template
struct Node
{
T data;
Node *next;
};
template
class List
{
private:
Node *head;
int _size;
public:
List();
void createlist1(int n);
void createlist2(int n);
void insert(int i, int e);
void deletebyeindex(int i);
int find(T element);
void change(int j, T element);
Node* reverse();
void display();
};
//创建头节点,头节点指向一个空的链表
template
List::List()
{
head = new Node;
head->next = NULL;
_size = 0;
}
//使用头插入法来创建链表
template
void List::createlist1(int n)
{
Node *temp;
Node *p;
p = head;
cout << "请输入你想输入的数据" << endl;
for (int i = 0; i < n; i++)
{
temp = new Node;
cin >> temp->data;
temp->next = p->next;
p->next = temp;
}
}
//使用尾插法
template
void List::display()
{
Node *p;
p = head->next;
while (p)
{
cout << p->data << endl;
p = p->next;
_size++;
}
}
//使用头插法插入元素
template
void List::createlist2(int n)
{
Node *temp;
Node *p;
p = head;
cout << "请输入你想输入的元素: " << endl;
for (int i = 0; i < n; i++)
{
temp = new Node;
cin >> temp->data;
p->next = temp;
p = temp;
}
p->next = NULL;
}
template
void List::insert(int j, int e)
{
Node *p;
p = head;
int i = 0;
while (p && i < j - 1)
{
p = p->next;
i++;
}
if (!p || i > j - 1)
cout << "插入错误" << endl;
else
{
Node *s;
s = new Node;
s->data = e;
s->next = p->next;
p->next = s;
}
}
template
void List::deletebyeindex(int i)
{
Node *p;
p = head;
Node *deleteNode;
int j = 0;
while (p && j < i - 1)
{
p = p->next;
j++;
}
if (!p || j > i - 1)
cout << "删除错误" << endl;
else
{
deleteNode = p->next;
p->next = p->next->next;
}
delete deleteNode;
}
//查找某个元素
template
int List::find(T element)
{
Node *p;
p = head;
int j = 0;
while (p && j < 4)
{
if (p->data == element)
return j;
else
p = p->next;
j++;
}
return j;
}
//修改某一个元素
template
void List::change(int j, T element)
{
Node s;
s = head;
int i = 0;
while (s && i < j - 1)
{
s = s->next;
i++;
}
s->next->data = element;
}
//反转链表
template
Node List::reverse()
{
Node *reverse = NULL;
Node *next;
for (int i = 0; i < _size; i++)
{
next = head->next;
head->next = reverse;
reverse = head;
head = next;
}
}
#endif
#include
#include "List.h"
using namespace std;
int main()
{
// List s1;
List s2;
// List s3;
// s1.createlist1(4);
s2.createlist2(4);
// s1.display();
// s2.insert(2,200);
// s2.deletebyeindex(1);
s2.display();
// s2.change(1,200);
// s2.reserve();
// s2.display();
s2.reverse();
s2.display();
// cout << s2.find(4) << endl;
return 0;
}```
运行结果及报错内容
输入1 2 3 4
返回1 2 3 4 1 2 3 4