大话数据结构 06:栈 顺序存储结构
生活随笔
收集整理的這篇文章主要介紹了
大话数据结构 06:栈 顺序存储结构
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
基礎內容
棧的基礎操作:
順序棧代碼
#include "stdio.h" #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 /* 存儲空間初始分配量 */typedef int Status; typedef int SElemType; /* SElemType類型根據實際情況而定,這里假設為int *///順序棧結構 typedef struct {SElemType data[MAXSIZE];int top; }SqStack;Status visit(SElemType c) {printf("%d", c);return OK; }// 構造一個空棧 Status InitStack(SqStack* S) {S->top = -1;return OK; }//把S置為空棧 Status ClearStack(SqStack* S) {S->top = -1;return OK; }//判斷是否為空棧 const Status StackEmpty(SqStack* S) {if (S->top == -1)return TRUE;else{return FALSE;} }//返回棧中元素的個數 int StackLength(SqStack S) {return (S.top + 1); }// 返回棧頂的元素 const Status GetTop(SqStack* S, SElemType* e) {if (S->top == -1)return ERROR;else{*e = S->data[S->top];}return OK; }//插入元素e為新的棧頂元素 Status Push(SqStack* S, SElemType e) {if (S->top == MAXSIZE - 1){return ERROR; //棧已經滿了}S->top++;S->data[S->top] = e; /* 棧頂指針增加一 */return OK; /* 將新插入元素賦值給棧頂空間 */ }// 刪除棧頂元素 Status Pop(SqStack* S, SElemType* e) {if (S->top == -1)return ERROR;else{*e = S->data[S->top];S->top--;return OK;} }//從棧頂依次顯示每個元素 const Status StackTraverse(SqStack *S) {int i;i = 0;while (i <= S->top){visit(S->data[i]);i++;}printf("\n");return OK; }int main() {int j;SqStack s;int e;if (InitStack(&s) == OK)for (j = 1; j <= 10; j++)Push(&s, j);printf("棧中元素依次為:");StackTraverse(&s);Pop(&s, &e);printf("彈出的棧頂元素 e=%d\n", e);printf("棧空否:%d(1:空 0:否)\n", StackEmpty(&s));GetTop(&s, &e);printf("棧頂元素 e=%d 棧的長度為%d\n", e, StackLength(s));ClearStack(&s);printf("清空棧后,棧空否:%d(1:空 0:否)\n", StackEmpty(&s));return 0;}總結
以上是生活随笔為你收集整理的大话数据结构 06:栈 顺序存储结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大话数据结构05: 双向链表
- 下一篇: 大话数据结构07 :链表栈