iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 12
0
自我挑戰組

資料結構大便當系列 第 12

[Day 12] linked-list + stack

  • 分享至 

  • xImage
  •  

哇嗚 又要壓線了!


相信各位讀那本演算法一定都看過這種無聊題型
就像前兩天寫的用 stack implement queue 或是用 queue implement stack 這種
今天也不意外,來一個用 linked-list implement stack(其實很怕沒東西寫)

題目直接複製課本(增加被搜尋機率?)

Show how to implement a queue or stack using a linked list.

https://ithelp.ithome.com.tw/upload/images/20190924/201202505hhYJnQZTf.png

首先這是一個 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;
   }
}

上一篇
[Day 11] linked-list 指標
下一篇
[Day 13] linked-list + queue
系列文
資料結構大便當30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言