实现链栈功能算法时间复杂度:O(1);
代码如下:
#include <stdio.h>
#include <iostream>
using namespace std;
#define sElemType int
typedef struct linkNode{
sElemType data;//数据域
linkNode *next;//指针域
}*linkStack;
//判空函数(链栈为空返回1;不为空返回0)
int isEmpty(linkStack top){
return top==NULL;
}
//初始化链栈
void initLinkStack(linkStack &top){
top=NULL;
}
//插入元素到链栈
void push(linkStack &top,sElemType val){
linkStack newNode=new linkNode[1];
newNode->data=val;
newNode->next=top;
top=newNode;
}
//打印链栈栈顶元素 linkStack &val,sElemType val
void printTop(linkStack top){
if(isEmpty(top)){
cout<<"当前链栈无栈顶元素,无法打印栈顶元素"<<endl;
return;
}
cout<<"当前链栈栈顶的元素为:"<<top->data<<endl;
}
//删除链栈的栈顶元素
void pop(linkStack &top,sElemType &val){
if(isEmpty(top)){
cout<<"当前链栈无栈顶元素,无法弹出栈顶元素"<<endl;
return;
}
val=top->data;
linkStack tempPtr=top;
top=top->next;
delete tempPtr;
cout<<"链栈被弹出的元素为:"<<val<<endl;
}
int main(){
linkStack top;
initLinkStack(top);
push(top,1);
push(top,2);
printTop(top);
sElemType val;
pop(top,val);
printTop(top);
pop(top,val);
printTop(top);
pop(top,val);
printTop(top);
return 0;
} 在这里插入代码片
运行结果截图如下: