大话数据结构07 :链表栈
生活随笔
收集整理的這篇文章主要介紹了
大话数据结构07 :链表栈
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
基礎(chǔ)介紹
用鏈表結(jié)構(gòu)作為棧的支撐結(jié)構(gòu)
代碼
#include "stdio.h" #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 /* 存儲(chǔ)空間初始分配量 */typedef int Status; typedef int SElemType; /* SElemType類型根據(jù)實(shí)際情況而定,這里假設(shè)為int *///鏈棧結(jié)構(gòu) typedef struct StackNode {SElemType data;struct StackNode* next; }StackNode, *LinkStackPtr;typedef struct {LinkStackPtr top;int count; }LinkStack;Status visit(SElemType c) {printf("%d", c);return OK; }// 構(gòu)造一個(gè)空棧S Status InitStack(LinkStack* S) {if (!S->top) //如果已經(jīng)初始化過return ERROR;S->top = NULL;S->count = 0;return OK; }//把S置為空 Status ClearStack(LinkStack* S) {LinkStackPtr p;LinkStackPtr q;p = S->top;while (p){q = p;p = p->next;delete q;S->count--;}return OK; }//判斷是否為空棧 Status StackEmpty(LinkStack S) {if (S.count == 0)return TRUE;else{return FALSE;}return TRUE; }//返回棧的長度 Status StackLength(LinkStack S) {return S.count; }//返回棧頂元素 const Status GetTop(LinkStack *S, SElemType* e) {if ((*S).top == NULL)return ERROR;else{*e = (*S).top->data;}return OK; }//插入元素e為新的棧頂元素 Status Push(LinkStack* S, SElemType e) {LinkStackPtr n = new StackNode();n->data = e; //當(dāng)前元素作為頂元素n->next = (*S).top; (*S).top = n;//元素?cái)?shù)目加1S->count++;return OK; }//若棧不為空 則刪除S的棧頂元素 Status Pop(LinkStack* S, SElemType* e) {if (!S->top)return ERROR;else{//返回棧頂元素的值(*e) = S->top->data;//棧頂元素后移LinkStackPtr q = S->top;S->top = S->top->next;//刪除棧頂元素delete q;S->count--;}return OK; }//遍歷棧 Status StackTraverse(LinkStack* S) {LinkStackPtr p;p = S->top;while (p){visit(p->data);p = p->next;}printf("\n");return OK; } int main() {int j;LinkStack 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; }總結(jié)
以上是生活随笔為你收集整理的大话数据结构07 :链表栈的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大话数据结构 06:栈 顺序存储结构
- 下一篇: tensorflow kears GPU