#include "stack.h"
void test();
ElementType dataArray[] = {
{1,"侠客行"},
{2,"将进酒"},
{3,"神来之笔"},
{4,"青莲剑歌"}
};
int main()
{
test();
return 0;
}
void test(){
SeqStack seqstack;
ElementType * element = (ElementType *)malloc(sizeof(SeqStack));
InitSeqStack(&seqstack);
for (int i=0;i<4;i++){
PushSeqStack(&seqstack,dataArray[i]);
printf("当前入栈:%dt%s.n",dataArray[i].id,dataArray[i].name);
}
PopSeqStack(&seqstack,element);
printf("当前出栈:%dt%s.n",element->id,element->name);
}
stack.h
#ifndef STACK_H_INCLUDED #define STACK_H_INCLUDED #includestack.c#include #define MAX_SIZE 255 #define TRUE 1 #define FALSE 0 typedef struct { int id; char * name; }ElementType; //定义栈的顺序存储方式 typedef struct SeqStack{ ElementType elements[MAX_SIZE]; //顺序栈中用来存放数据元素的数组 int top; //栈顶(数组中元素的下标),如果为-1则证明栈为空 int length; //当前栈的元素个数 }SeqStack; //初始化栈 void InitSeqStack(SeqStack * seqstack); //元素入栈,返回插入结果:true或false int PushSeqStack(SeqStack * seqstack,ElementType element); //出栈,返回出栈结果:true或false int PopSeqStack(SeqStack * seqstack,ElementType * element); //清空栈 void ClearSeqStack(SeqStack * seqstack); //返回栈顶元素 void GetTopElement(SeqStack * seqstack,ElementType * element); #endif // STACK_H_INCLUDED
#include "stack.h"
//初始化栈
void InitSeqStack(SeqStack * seqstack){
seqstack->top = -1;
seqstack->length = 0;
}
//元素入栈,返回插入结果,true或false
int PushSeqStack(SeqStack * seqstack,ElementType element){
if(seqstack->top == MAX_SIZE-1){
printf("栈已满.");
return FALSE;
}
seqstack->top++; //栈顶指针+1,以便加入新的元素
seqstack->elements[seqstack->top] = element;
seqstack->length++;
return TRUE;
}
//出栈,返回出栈结果:true或false
int PopSeqStack(SeqStack * seqstack,ElementType * element){
if (seqstack->top == -1){
printf("空栈,无法出栈.n");
}
*element = seqstack->elements[seqstack->top]; //放回栈顶指向的元素
seqstack->length--;
seqstack->top--;
return TRUE;
}
//清空栈
void ClearSeqStack(SeqStack * seqstack){
seqstack->length = 0;
seqstack->top = -1;
}
//返回栈顶元素
void GetTopElement(SeqStack * seqstack,ElementType * element){
if (seqstack->top == 1){
printf("空栈.");
element = NULL;
return;
}
*element = seqstack->elements[seqstack->top];
}
链栈



