//链栈定义及各类操作
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<stdbool.h>
typedef int Elemtype;
typedef struct LiStack
{
Elemtype data; //数据域
struct LiStack *next; //指针域
} LiStack; //栈类型定义
//初始化链栈
void InitLiStack(LiStack S){
S.next = NULL;
return true;
}
//链栈进栈操作(将数据元素e压入栈中)
void PushLiStack(LiStack *S, Elemtype e){
LiStack *top = (LiStack *)malloc(sizeof(LiStack));
if (top == NULL)
return false; //申请内存空间失败
top->data = e;
top->next = S->next;
S->next = top; //指针前移至头节点
return true;
}
//链栈出栈操作(将栈顶元素弹出,放到e所指的存储空间中)
void PopLiStack(LiStack *S, Elemtype *e){
if (S == NULL)
return false; //空栈,无数据
LiStack *temp = S->next;
*e = temp->data;
S->next = temp->next;
free(temp);
return true;
}
【数据结构】链栈的定义和基本操作
最新推荐文章于 2023-05-07 14:25:54 发布