我认为我的推送方法有问题

时间:2014-02-13 05:31:36

标签: c++ linked-list stack

我有一个实现堆栈类的通用列表类(主类),我将在下面显示主类的推送部分:(s1是通过复制构造函数生成的列表的副本)

for (int i=0; i<1000; i++) // push 1000 times with i+100
    s1.Push(i+100);
cout << "*Push(i+100) 1000 times\ns1=" << s1 << endl;
cout << "s1.Size()=" << s1.Size() << endl;
cout << "s1.IsEmpty()=" << ((s1.IsEmpty()) ? "T" : "F") << endl;
cout << "s1.IsFull()=" << ((s1.IsFull()) ? "T" : "F") << endl;
cout << "s1.Peek()=" << s1.Peek() << endl;
cout << endl;

我推动的方法是:

`void Push(T item)
    {
        Node *p = new Node;
        p -> data = item;
        p->link = top;
        top = p;
        num_items++;
    }`

我期望收到的输出是:

*Push(i+100) 1000 times
s1=129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109        108 107 106 105 104 103 102 101 100 
s1.Size()=30
s1.IsEmpty()=F
s1.IsFull()=T
s1.Peek()=129

但我收到了这个输出,我将在下面的图片中发布。

enter image description here

编辑: 当我将其更改为仅推送100个堆栈时,这是我得到的输出,

enter image description here

白色的左边是预期的输出,我希望增加清晰度。

1 个答案:

答案 0 :(得分:0)

这个推送功能有效,非常感谢@ user1781290

int Push(const T& item)
{
    int res = -1;
    if(num_items != MAX_SIZE)
    {
        Node *p = new Node;
        p -> data = item;
        p->link = top;
        top = p;
        res = ++num_items;
    }
    return res;
}