1. 程式人生 > 實用技巧 >C++資料結構——棧

C++資料結構——棧

C++資料結構——棧

目錄
1、簡介
2、基本結構
3、基本操作


簡介

棧是限制插入和刪除只能在一個位置上進行的表,該位置是表的末端,叫做棧的頂,棧的特點是先進後出(後進先出)

基本結構

棧的基本結構如下圖

我們可以發現其實棧的結構圖橫過來看就是一張使用了頭插法的表,所以我們在建立時按照表的建立方法就行了

基本操作

棧的基本操作只有入棧和出棧兩個操作

棧的型別宣告

typedef struct node* Node;
struct node{
	int Element;
	Node next;
};

入棧

void push(Node head,int x){
	Node temp=new node;
	temp->Element=x;
	temp->next=head->next;
	head->next=temp;
}

出棧

void pop(Node head){
	if(head->next){
		Node temp=new node;
		temp=head->next;
		head->next=temp->next;
		delete(temp);
	}
}

這些操作與表那一節一模一樣,如果有不懂的可以看我之前的部落格

下面貼上完整程式碼

#include<iostream>
using namespace std;
typedef struct node* Node;
struct node{
	int Element;
	Node next;
};
void push(Node head,int x){//傳入引數節點要是頭結點
	Node temp=new node;
	temp->Element=x;
	temp->next=head->next;
	head->next=temp;
}
void pop(Node head){//傳入引數節點要是頭結點
	if(head->next){
		Node temp;
		temp=head->next;
		head->next=temp->next;
		delete(temp);
	}
}
void print(Node head){
	while(head->next){
		cout<<head->next->Element<<" ";
		head=head->next;
	}
}
//輸入五個數,入棧後出一次棧,然後輸出
int main(){
	int x;
	Node head=new node;
	head->next=NULL;
	for(int i=0;i<5;i++){
		cin>>x;
		push(head,x);
	}
	pop(head);
	print(head);
	return 0;
}

有什麼遺漏或者錯誤,歡迎大家指出