E2.
Consider a linked stack that includes a method size.This method size requires a loop that moves through the entire stack to count the entries,since the bunber of entries in the stack is not kept as a separate member in the stack record.
(a)
Write a method size for a linked stack by using a loop that moves a pointer variable from node to node through the stack.
#include<iostream>
using namespace std;
typedef Stack_entry Node_entry;
int main()
{
class Stack
{
public:
Stack();
bool empty()const;
Error_code size(const Stack_entry&item);
Error_code top(Stack_entry&item)const;
protected:
Node*top_node;
int count=0;
}
Error_code Stack::top(Stack_entry&item)const;
{
if(top_node==NULL)
return underflow;
item=top_node->entry;
return success;
}
Error_code Stack::size(const Stack_entry&item)
{
if(top_node==NULL)
count=0;
else while(!empty())
{
Node*old_top=top_node;
top_node=old_top->next;
delete old_top;
count++;
}
}
return count;
}