1. 程式人生 > 其它 >線性表(特殊)-Stack(棧)

線性表(特殊)-Stack(棧)

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;
    return
1; }

入棧 返回棧頂

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) {
    return
stack.length; }

訪問棧頂元素:

取出棧頂元素,傳值給形參elem,但不刪除棧頂元素。由於採用的是引用的方式,
因此形參值的改變可以傳給實參。

int top(Stack stack, int &elem) {
    if (stack.length == 0)return 0;
    elem = stack.elem[stack.length - 1];
    return elem;
}