我是数据结构的新手,很长一段时间后开始使用C ++。在完成几个图表后,我决定创建自己的链表(实现一个简单的pop函数)。
以下是我提出的代码:
#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;
}
这很基本,但我似乎面临着一个问题;当我运行程序时,第一个输出是&#39; 6&#39;这是正确的但在那之后,所有的值都是20(即使我将计数器硬设置为某些硬编码值,如20(见代码)。如果有人能解释错误,我会很感激这个实现(除了程序非常混乱的事实)。此外,我将采取什么步骤来获得正确的“pop”功能。
答案 0 :(得分:1)
在你的ShowStack()函数中,移动&#34; node * temp = start;&#34;在循环之外。