使用链接列表

时间:2016-10-12 16:40:18

标签: c++ pointers data-structures linked-list

我是数据结构的新手,很长一段时间后开始使用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”功能。

1 个答案:

答案 0 :(得分:1)

在你的ShowStack()函数中,移动&#34; node * temp = start;&#34;在循环之外。