1. 程式人生 > >【資料結構】c++ 採用鏈式結構實現關於入棧,出棧,列印棧的操作

【資料結構】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);

}