哇嗚 又要壓線了!
相信各位讀那本演算法一定都看過這種無聊題型
就像前兩天寫的用 stack implement queue 或是用 queue implement stack 這種
今天也不意外,來一個用 linked-list implement stack(其實很怕沒東西寫)
題目直接複製課本(增加被搜尋機率?)
Show how to implement a queue or stack using a linked list.
首先這是一個 linked-list
接者可以看這張圖想想自己消失多的女朋友(x)想想 stack 的邏輯(o)
Stack 是包含元素集合的抽象數據結構。並有 LIFO 機制,即先進後出的原則。
先定義 linked-list 結構如下:
struct Node {
int data;
struct Node *next;
};
在實現 stack 的 push 功能並不難,push 的操作只是將參數 val 壓入 stack,就猶如在 linked-list 中創建一個新節點,並將 val 插入。並添加到 linked-list 的最前面,指向 linked-list 的頂部。
void push(int val) {
struct Node* newnode = (struct Node*) malloc(sizeof(struct Node));
newnode->data = val;
newnode->next = top;
top = newnode;
}
而在 pop 的部份,只要回傳 top 的數值即可,當然,要判斷一下 overflow 的問題
void pop() {
if(top==NULL)
cout<<"Stack Underflow"<<endl;
else {
cout<<"The popped element is "<< top->data <<endl;
top = top->next;
}
}