我是一个数据结构新手,在很长一段时间后才开始使用c++。在浏览了一些图表之后,我决定创建我自己的链表(实现一个简单的弹出函数)。
下面是我想出来的代码:#include <iostream>
using namespace std;
typedef struct node
{
int data;
node *next;
}node;
node *start;
int count_1 = 0;
void push(int x)
{
node *n = new node;
node *temp;
temp = n;
temp->data = x;
temp->next = start;
start = temp;
count_1++;
}
void ShowStack()
{
for (int i=0; i<count_1; i++)
{
node *temp = start;
cout<<temp->data<<endl;
temp = temp->next;
}
}
int main()
{
node *n = new node;
start = n;
n->data = 6;
n->next = NULL;
count_1++;
ShowStack();
push(7);
push(8);
push(9);
push(20);
//count_1=20;
ShowStack();
return 0;
}
这是非常基本的,但我似乎面临一个问题;当我运行程序时,第一个输出是'6',这是正确的,但之后,所有的值都是20(即使我硬设置计数器为一些硬编码的值,如20(见代码))。如果有人能解释一下这个实现有什么问题,我将不胜感激(除了这个程序非常混乱的事实之外)。此外,我应该采取什么步骤来获得正确的'pop'功能
在ShowStack()函数中,将"node *temp = start;"移出循环。