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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数据结构之链式栈的一些基本操作

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

鏈式棧是一種數據存儲結構,可以通過單鏈表的方式來實現,使用鏈式棧的優點在于它能夠克服用數組實現的順序棧空間利用率不高的特點,但是需要為每個棧元素分配額外的指針空間用來存放指針域。
頭文件 LinkStack.h

#ifndef __LINKSTACK_H__ #define __LINKSTACK_H__ #include "error.h"#define FALSE 0 #define TRUE 1typedef int StackData; typedef struct _node {StackData data;struct _node* next; }Node; typedef struct _linkStack {Node* top; }LinkStack;// 創建棧 LinkStack* Create_Stack ();// 判棧空否 int StackEmpty (LinkStack* s);// 進棧 int Push (LinkStack* s, StackData x);// 出棧 int Pop (LinkStack* s, StackData *x);// 獲取棧頂元素 int GetTop (LinkStack* s, StackData *x);// 銷毀表 int Destroy (LinkStack* s);#endif // __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; }

總結

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

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