C 基礎資料結構 棧 ADT

2021-06-21 02:15:18 字數 1393 閱讀 5266

#include #include #include #define max_size 20

/** 使用adt實現棧模型的出棧和入棧

* 函式中返回值 -1 表示失敗, 0 表示成功

*

*/typedef struct node *node;

typedef struct stack *stack;

stack createmptystack()

stack->top = null;

stack->size = 0;

return stack;

}int isstackempty(stack stack)

int isstackfull(stack stack)

int push(stack stack,int data)

p = (node)malloc(sizeof(struct node));

if(p == null)

p->data = data;

p->pre = null;

p->pre = stack->top;

stack->top = p;

(stack->size) ++;

return 0;

}int pop(stack stack , int* data)

node p ;

p = stack->top;

*data = p->data;

stack->top = p->pre;

(stack->size) --;

free(p);

p = null;

return 0;

}int gettop(stack stack,int *data)

*data = stack->top->data;

return 0;

}void printstack(stack stack)

node p = stack->top;

while(p!=null)

printf("\n");

}void destory(stack stack)

} free(stack);

return ;

}int main(int argc ,char *argv)

ret = gettop(stack,&data);

if(ret == -1)else

ret = pop(stack ,&data);

if(ret == -1)else

printstack(stack);

}

目的很明顯,給自己做乙個記錄,**在ubuntu上編譯通過。**中會有一些我沒有考慮到的內容,請指出,

資料結構 棧ADT

棧 stack 是限定僅在表尾插入和刪除操作的線性表 允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 我們可以模擬手槍彈夾,瀏覽器的後退和前進等等都是棧 棧的插入操作,稱為進棧,也稱壓棧 入棧 push 棧的刪除操作,稱為出棧,也稱為彈棧 pop 棧本身就是乙個線性表,線性表的順...

資料結構 順序棧ADT

抽象資料型別 abstract data type,adt 是電腦科學中具有類似行為的特定類別的資料結構的數學模型 或者具有類似語義的一種或多種程式語言的資料型別。抽象資料型別是間接定義的,通過其上的可執行的操作以及這些操作的效果的數學約束 與可能的代價 維基百科 ifndef stack h in...

資料結構 鏈棧ADT

抽象資料型別 abstract data type,adt 是電腦科學中具有類似行為的特定類別的資料結構的數學模型 或者具有類似語義的一種或多種程式語言的資料型別。抽象資料型別是間接定義的,通過其上的可執行的操作以及這些操作的效果的數學約束 與可能的代價 維基百科 ifndef stack h in...