#include <iostream>
using namespace std;
//C/C++不带头结点的栈
typedef struct Stack{
int data;
struct Stack *next;
}Stack,*StackNoHead;
//初始化
void initStackNoHead(StackNoHead &s){
s = NULL;
}
//入栈
void pushStackNoHead(StackNoHead &s,int data){
Stack *nextData = (Stack*)malloc(sizeof(Stack));
nextData->next = NULL;
nextData->data = data;
nextData->next = s;
s = nextData;
}
//出栈
bool popStackNoHead(StackNoHead &s,int &popData){
if(s == NULL){
return false;
}
Stack *pop = s;
popData = pop->data;
s = pop->next;
return true;
}
//判断栈空
bool isEmpty(StackNoHead s){
if(s == NULL){
return true;
}else{
return false;
}
}
//查看栈顶
bool getTopStackNoHead(StackNoHead s,int &topData){
if(s == NULL){
return false;
}
topData = s->data;
return true;
}
int main()
{
StackNoHead s;
initStackNoHead(s);
for(int i = 1 ; i <= 10 ;i++){
pushStackNoHead(s,i);
}
int topData;
getTopStackNoHead(s,topData);
cout<<"栈顶元素为:"<<topData<<endl;
while(!isEmpty(s)){
int popData;
popStackNoHead(s,popData);
cout<<"弹出元素为"<<popData<<endl;
}
return 0;
}
C/C++不带头结点的栈
最新推荐文章于 2024-10-04 23:00:36 发布
本文详细介绍了C++中无头结点的栈数据结构,包括初始化、入栈、出栈、判断栈空以及查看栈顶的操作。
摘要由CSDN通过智能技术生成