layout: post
title: "栈实现"
date: 2020-09-01
author: "王玉松"
header-img: ""
categories: Data Structure
tags:
- 栈
- 顺序栈
- 链栈
栈实现
一、基本数据结构
栈的实现分成顺序栈和链栈两种形式
typedef struct Stack
{
int top;
int data[MAXSIZE];
}Stack;
typedef struct Node {
int data;
Node *next;
}Node, *LStack;
二、基本的数据结构操作
顺序栈和链栈的逻辑操作基本一致, 一些判断条件有所改变.
相比于顺序栈
- 链栈不存在判断栈满的操作;
- 链栈的存储密度有所下降;
- 链栈进行删除操作时需要释放申请的内存.
//顺序栈的基本操作
void InitStack(Stack *S);
void Push(Stack *S, int value);
void Pop(Stack *S, int *value);
void GetTop(Stack *S, int *value);
void StackLength(Stack *S, int *value);
void ClearStack(Stack *S);
int Empty(Stack *S);
void DisplayStack(Stack *S);
//链栈的基本操作
void InitStack(LStack S);
void Push(LStack S, int value);
void Pop(LStack S, int *value);
void GetTop(LStack S, int *value);
void DestroyStack(LStack S);
void StackLength(LStack S, int *value);
int Empty(LStack S);
void DisplayStack(LStack S);
三、从中获得的关于编写C代码的知识
-
链栈中的结点定义中使用 typedef struct Node {...}Node, *LStack;
LStack 类型相当于 Node 型指针, 作为指针类型使用, 区别与一般的 Node. -
需要综合函数的健壮性和可读性, 过多的错误处理会导致函数复杂.
网友评论