链栈的基本类型定义:
typedef struct LNode{
int data;
struct LNode *next;
LNode (int Data=0,struct LNode * Next=NULL){
data=Data;
next=Next;
}
}LNode ,*LinkList ;
链栈的基本操作:
1、初始化操作InitStack
2、判断一个链栈是否为空栈StackEmpty
3、求链栈的长度StackLength
4、入栈操作Push()
5、出栈操作Pop
6、取栈顶元素操作GetTop()
1、初始化操作InitStack
//1、初始化操作InitStack
void InitStack(LinkList &LS){
LS=NULL;
}
2、判断一个链栈是否为空栈StackEmpty
//2、判断一个链栈是否为空栈StackEmpty
bool StackEmpty(LinkList LS){
return LS?false:true;
}
3、求链栈的长度StackLength
//3、求链栈的长度StackLength
int StackLength(LinkList Ls){
int cnt=0;
LinkList p=Ls;
while(p){
cnt++;p=p->next;
}
return cnt;
}
4、入栈操作Push()
//4、入栈操作Push()
void Push(LinkList &LS,SElemType e){
LinkList s;
s=new LNode(e,LS);
LS=s;
}
5、出栈操作Pop
//5、出栈操作Pop
void Pop(LinkList &LS,SElemType &e){
if(!LS){
printf("error !!! Stack is empty !\n");
return ;
}
e=LS->data;
LinkList s=LS;
LS=LS->next;
delete s;
}
6、取栈顶元素操作GetTop()
//6、取栈顶元素操作GetTop()
void GetTop(LinkList LS,SElemType &e){
if(!LS){
printf("error !!! Stack is empty !\n");
return ;
}
e=LS->data;
}
完整的调试代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define SElemType int
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
LNode (int Data=0,struct LNode * Next=NULL){
data=Data;
next=Next;
}
}LNode ,*LinkList ;
void InitStack(LinkList &LS){
LS=NULL;
}
bool StackEmpty(LinkList LS){
return LS?false:true;
}
int StackLength(LinkList Ls){
int cnt=0;
LinkList p=Ls;
while(p){
cnt++;p=p->next;
}
return cnt;
}
void Push(LinkList &LS,SElemType e){
LinkList s;
s=new LNode(e,LS);
LS=s;
}
void Pop(LinkList &LS,SElemType &e){
if(!LS){
printf("error !!! Stack is empty !\n");
return ;
}
e=LS->data;
LinkList s=LS;
LS=LS->next;
delete s;
}
void GetTop(LinkList LS,SElemType &e){
if(!LS){
printf("error !!! Stack is empty !\n");
return ;
}
e=LS->data;
}
int main()
{
int a[]={1,3,5,6,7};
LinkList Ls;
InitStack(Ls);
if(StackEmpty(Ls)){
int e;
for(int i=0;i<5;i++){
Push(Ls,a[i]);
GetTop(Ls,e);
printf("%d%c",e,i==4?'\n':' ');
}
printf("%d\n",StackLength(Ls));
for(int i=0;i<5;i++){
Pop(Ls,e);
printf("%d%c",e,i==4?'\n':' ');
}
}
return 0;
}