数据结构之链式栈的一些基本操作
生活随笔
收集整理的這篇文章主要介紹了
数据结构之链式栈的一些基本操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鏈式棧是一種數據存儲結構,可以通過單鏈表的方式來實現,使用鏈式棧的優點在于它能夠克服用數組實現的順序棧空間利用率不高的特點,但是需要為每個棧元素分配額外的指針空間用來存放指針域。
頭文件 LinkStack.h
源文件 LinkStack.c
#include "LinkStack.h" #include <stdlib.h>// 創建棧 LinkStack* Create_Stack () {LinkStack* s = (LinkStack*) malloc(sizeof(LinkStack)/sizeof(char));if (NULL == s){errno = MALLOC_ERROR;return NULL;}// 置空棧s->top = NULL;return s; }// 判棧空否 int StackEmpty (LinkStack* s) {if (NULL == s){errno = ERROR;return FALSE;}return s->top == NULL; }// 進棧 int Push (LinkStack* s, StackData x) {if (NULL == s){errno = ERROR;return FALSE;}// 新建結點Node* node = (Node*) malloc(sizeof(Node)/sizeof(char));if (NULL == node){errno = MALLOC_ERROR;return FALSE;}node->data = x;node->next = s->top;s->top = node;return TRUE; }// 出棧 int Pop (LinkStack* s, StackData *x) {if (NULL == s){errno = ERROR;return FALSE;}if (StackEmpty(s)){errno = EMPTY_STACK;return FALSE;}Node* p = s->top;*x = p->data;s->top = p->next;free(p);return TRUE; }// 獲取棧頂元素 int GetTop (LinkStack* s, StackData* x) {if (NULL == s){errno = ERROR;return FALSE;}if (StackEmpty(s)){errno = EMPTY_STACK;return FALSE;}*x = s->top->data;return TRUE; }// 銷毀棧 int Destroy (LinkStack* s) {if (NULL == s){errno = ERROR;return FALSE;}int x;while (TRUE != StackEmpty(s)){Pop (s, &x);}free(s);return TRUE; }總結
以上是生活随笔為你收集整理的数据结构之链式栈的一些基本操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华为 鸿蒙 升级,华为鸿蒙系统已陆续推送
- 下一篇: SDUT-3364_欧拉回路