日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构之顺序栈的一些基本操作

發布時間:2023/12/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构之顺序栈的一些基本操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

**

順序棧可以用一個一維數組和一個記錄棧頂位置的整形變量來實現,數組用于順序存儲棧中所有的數據元素,棧頂指針用于存儲棧頂元素的位置。

**
頭文件(Sqstack.h):

#ifndef __SQSTACK_H__ #define __SQSTACK_H__#include "error.h"#define TRUE 1 #define FALSE 0#define SIZE 10 typedef int StackData; typedef struct _stack {StackData data[SIZE]; // 棧數組int top; }Stack;// 置空棧 int InitStack (Stack* s);// 判棧是否空棧 int StackEmpty (Stack* s);// 判棧是否棧滿 int StackFull (Stack* s);// 進棧 int Push (Stack* s, StackData x);// 出棧 int Pop (Stack* s, StackData *x);// 取棧頂 int GetTop (Stack* s, StackData *x);#endif

源文件(Sqstack.c):

#include "SqStack.h"// 置空棧 int InitStack (Stack* s) {if (NULL == s){errno = ERROR;return FALSE;}s->top = -1; }// 空返回真,否則返回假 int StackEmpty (Stack* s) {if (NULL == s){errno = ERROR;return FALSE;}return s->top == -1; }// 滿則返回真,否則返回假 int StackFull (Stack* s) {if (NULL == s){errno = ERROR;return FALSE;}return s->top == (SIZE - 1); }// 進棧 int Push (Stack* s, StackData x) {if (NULL == s){errno = ERROR;return FALSE;}// 判斷是否棧滿if (StackFull(s)){errno = FULL_STACK;return FALSE;}// 先進行x的存儲s->data[++s->top] = x; return TRUE; }// 出棧 int Pop (Stack* s, StackData *x) {if (NULL == s){errno = ERROR;return FALSE;}// 判斷是否空棧if (StackEmpty(s)){errno = EMPTY_STACK;return FALSE;}*x = s->data[s->top--];return TRUE; }// 取棧頂 int GetTop (Stack* s, StackData *x) {if (NULL == s){errno = ERROR;return FALSE;}//判斷是否空棧if (StackEmpty(s)){errno = EMPTY_STACK;return FALSE;}*x = s->data[s->top];return TRUE; }

總結

以上是生活随笔為你收集整理的数据结构之顺序栈的一些基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。