利用链表逆序打印输出字符
请多指教
输入n,表示要输入多少个数
接下来输入这n个数
你的程序是错误的,第一个for循环里面,每次malloc一个节点,并没有对next域进行赋值,从而把链表节点串起来。到你第二个for循环里面,还没有做空指针判断就直接访问next域,而且直接调用free。
下面是我在你程序基础上的改进:
#include <iostream>
using namespace std;
typedef struct Node {
int data;
Node* next;
Node() : data(0), next(nullptr)
{ }
explicit Node(int data) : data(data), next(nullptr)
{ }
Node(int data, Node* next) : data(data), next(next)
{ }
}*LinkList;
int main()
{
int n, m;
Node dummy; // 虚拟头结点
LinkList head = &dummy;
Node* p;
cin >> n;
while (n-- > 0) {
cin >> m;
Node* node = new Node(m);
// 每次插入到头结点之后首节点
p = head->next;
head->next = node;
node->next = p;
}
p = head->next;
while (p) {
cout << p->data << ' ';
Node* next = p->next;
delete p;
p = next;
}
cout << endl;
return 0;
}