【資料結構】c++ 採用鏈式結構實現關於入棧,出棧,列印棧的操作
c++標準的庫模板中,有專門的容器棧,但是為了鞏固下對棧的理解,用結構體以鏈式結構寫了個小demo,留著備用
#include
#include"stdafx.h"
using namespace std;
struct node
{
int data;
node* next;
};//棧元素
struct stack_top
{
node * top;
int cout;
};//棧頂元素,定義的一個遊標
void push_stack(stack_top *p, node *new_node)
{
new_node->next = p->top;
p->top = new_node;
p->cout++;
}//入棧,下標為n的節點的next指向下標為n-1的節點,top始終指向頭節點
void print_node(stack_top * p)
{
node * temp;
temp= new node;
temp= p->top;
for (int i = 0; i < p->cout; i++)
{
cout << temp->data<< " ";
temp = temp->next;//為了不破壞遊標即top和頭節點的連結性
}
}
void pop_stack(stack_top *p)
{
node * e;
e = p->top;
p->top = p->top->next;
free(e);
p->cout--;
}//後入先出
void main()
{
node * stack;
stack = new node;
stack_top * top1;
top1 = new stack_top;
top1->top = stack;
top1->cout = 0;
node * new_node;
for (int i=0; i < 10; i++)
{
new_node = new node;
new_node->data = i;
push_stack(top1, new_node);
}
print_node(top1);
cout << endl;
pop_stack(top1);
print_node(top1);
}