線性表(特殊)-Stack(棧)
阿新 • • 發佈:2021-11-03
1:順序棧-陣列
2:鏈棧
#define initSize 20 typedef struct stackNode { int data; int lenth; struct stackNode *next; }linkStack;
定義操作初始化棧
int initStack(linkStack &stack) { stack= (linkStack *) malloc(sizeof(linkStack)); if (!stack)return 0; //記憶體分配失敗,儲存空間不夠 stack.length = 1; return1; }
入棧 返回棧頂
linkStack *push(linkStack *top,int a) { linkStack *p=(linkStack *)malloc(sizeof(linkStack)); p->data=a; p->next=top; top=p; return top; }
出棧 返回棧頂
linkStack *pop(linkStack *top) { if(top) { linkStack *p=top; top=top->next; printf("彈棧元素:%d ",p->data); if (top) { printf("棧頂元素:%d\n",top->data); }else{ printf("棧已空\n"); } free(p); } else { printf("棧內沒有元素"); return top; } return top; }
判斷棧是否為空
int isEmptyStack(Stack stack) { returnstack.length; }
訪問棧頂元素:
取出棧頂元素,傳值給形參elem,但不刪除棧頂元素。由於採用的是引用的方式,
因此形參值的改變可以傳給實參。
int top(Stack stack, int &elem) { if (stack.length == 0)return 0; elem = stack.elem[stack.length - 1]; return elem; }