使用 _getch 创建链表并反转列表
Using _getch to create a linked list and reversing the list
目前,我可以在链表中键入 9 个字符,然后打印它们。在我这样做之后,它应该给我与我键入的列表相反的顺序,但它只给我列表的最后一个字母,然后它退出。我知道我在底部的反向功能不正确,但我不确定如何处理它。任何帮助将不胜感激。
class Node
{
public:
char c;
Node *next;
Node *curr;
Node(char cc) { c = cc; next = nullptr; };
};
void main()
{
char c;
Node *start = nullptr;
Node *end = nullptr;
int i = 0;
cout << "Original Linked List:" << endl;
while (i++ <= 10)
{
c = _getch();
Node *p = new Node(c);
if (start == nullptr)
{
start = p;
end = start;
}
else
{
end->next = p;
end = p;
}
cout << c;
}
cout << endl;
cout << "Reversed Linked List:" << endl;
while (start != nullptr) {
Node *curr = new Node(c);
start = curr->next;
curr->next = end;
end = curr;
curr = start;
}
cout << c << endl;
system("pause");
}```
如果我很清楚你想做什么, 以下是一些基本的演示解决方案,遵循您的风格。 请注意我所做的更改,关于节点结构、迭代等。 另外值得一提的是,需要释放分配的节点。
#include <iostream>
#include <conio.h>
struct Node {
char c;
Node* next;
Node* prev;
Node(char cc):c(cc),next(nullptr),prev(nullptr) { };
};
using namespace std;
int main()
{
char c;
Node* start = nullptr;
Node* end = nullptr;
int i = 0;
cout << "Original Linked List:" << endl;
while (++i <= 10)
{
c = _getch();
Node* p = new Node(c);
if (start == nullptr)
{
start = p;
end = start;
p->next = end;
p->prev = start;
}
else
{
p->prev = end;
end = p;
p->next = end;
}
cout << c;
}
cout << endl;
cout << "Reversed Linked List:" << endl;
Node* curr = end;
while (start != curr) {
cout << curr->c;
start = curr->next;
curr = curr->prev;
}
cout << "n";
system("pause");
return 0;
}
输出为
原始链表:
1234567890
反向链表:
0987654321
按任意键继续 . . .
相关文章:
- C++ 创建包含链表和字符串的对象的链接列表时出错
- 链表,将列表复制到另一个列表
- C++ 双向链表:使用矩阵类成员创建和填充列表
- 创建一个棋盘格或"Interweave"两个链接列表。IE 更改两个链表的指针
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 为什么在排序链表上的这种合并实现总是将两个列表都设置为 NULL,而只有一个应该设置一个列表?
- 如何理解C++中链表的自由列表实现?
- 自定义链表const_iterator无法遍历列表的非const实例
- 使用 _getch 创建链表并反转列表
- C++ 链表列表运算符[]
- 如何使用初始值设定项列表来指导创建链表?
- C++ 链表合并排序的实现在连接 1 个以上节点的子列表时失败
- 链表.如何删除列表中的第一个节点?
- 访问链表中的结构(带有指向其子实现的指针列表的树)
- 使用类继承将单个喜欢的列表转换为双向链表
- 是否可以将新的列表节点分配给链表的现有节点
- 如何将 2 个链表合并或合并在一起以创建新列表
- (C++)如何创建一个函数来接收两个排序的链表并返回出现在两个列表中的第三个元素列表
- C++链表将新节点添加到列表的开头
- 从堆栈列表(链表)中弹出一个数字