鏈棧ADT的實現(C語言) 2018.3.13
阿新 • • 發佈:2019-02-01
#include <stdio.h> #include <stdlib.h> /**< 鏈棧的實現 */ /**< 棧結點實現 */ typedef struct { int data; struct StNode* next; }StNode; /**< 棧結構實現 */ typedef struct { StNode* top; StNode* base; }Stack; /**< 初始化棧(初始化頭結點,首尾指標分別指向頭結點) */ void Init_Stack(Stack* q) { StNode* p; p->data=NULL; p->next=NULL; q->top=p; q->base=p; } /**< 棧判空 */ int Empty_Stack(Stack* p) { if(p->top==p->base) return 1; else return 0; } /**< 壓棧 */ void Push_Stack(Stack* q,int Val) { StNode* p; p->data=Val; p->next=q->top->next; q->top->next=p; } /**< 出棧 */ void Pop_Stack(Stack* q,int *Val) { if(Empty_Stack(q)==0) { StNode* b=q->top->next; StNode* a; *Val=b->data; a=q->top->next; q->top->next=b->next; } else; } /**< 列印棧頂元素 */ void GetTop_Stack(Stack* q) { StNode* a=q->top->next; printf("%d",a->data); } int main() { Stack S; Init_Stack(&S); printf("Hello world!\n"); return 0; }