一、棧
棧的核心操作:
入棧:把元素放到棧裡
出棧:把最後進來的元素刪掉
取棧頂元素:獲取到最後乙個進來的元素的結果
使用順序表實現棧:
使用尾插操作表示入棧;使用尾刪操作表示出棧;使用根據下表獲取元素的操作表示取棧頂元素
public class mystack
data[size] = val;
size++;
}// 2. 出棧,返回值就是被出棧了的那個元素--尾刪
public integer pop()
// 棧頂元素就是最後乙個元素
int ret = data[size - 1];
size--;
return ret;
}// 3. 取棧頂元素--根據下標獲取元素
public integer peek()
return data[size - 1];}}
使用鍊錶實現棧
使用頭插操作表示入棧;使用頭刪操作表示出棧;直接取頭結點表示取棧頂元素
class node
}public class mystack2
//非空
newnode.next = head;
head = newnode;
}// 2. 出棧--頭刪,返回值就是被出棧了的那個元素
public integer pop()
//只有乙個元素,刪完是空鍊錶
if (head.next == null)
int ret = head.val;
head = head.next;
return ret;
}// 3. 取棧頂元素--取頭結點
public integer peek()
return head.val;}}
二、佇列
使用鍊錶實現佇列
使用尾插操作表示入佇列;使用頭刪操作表示出佇列;直接獲取頭結點表示取佇列首元素
public class myqueue
}// 建立乙個鍊錶的頭結點
// 為了方便的進行尾插, 也記錄尾節點.
private node head = null;
private node tail = null;
// 佇列的核心操作
// 1. 入佇列--尾插, 返回值表示插入成功/失敗 (也是為了和標準庫的佇列的 offer 介面看齊)
public boolean offer(int val)
tail.next = newnode;
tail = tail.next;
return true;
}// 2. 出佇列--頭刪
public integer poll()
int ret = head.val;
if (head.next == null)
head = head.next;
return ret;
}// 3. 取隊首元素--獲取頭結點
public integer peek()
return head.val;}}
使用陣列來實現環形佇列
public class myqueue2
// 把新元素放到 tail 對應的下標上.
data[tail] = val;
// 自增 tail
tail++;
// 一旦 tail 到達了陣列的末尾, 就需要讓 tail 從頭開始
if (tail == data.length)
// 更新 size 的值.
size++;
return true;
}// 2. 出佇列
public integer poll()
int ret = data[head];
// 更新 head 的位置
head++;
// 一旦 head 到達了陣列的末尾, 就需要讓 head 從頭開始
if (head == data.length)
// 更新 size 的值.
size--;
return ret;
}// 3. 取隊首元素
public integer peek()
return data[head];}}
使用雙向鍊錶實現佇列和棧
下面是使用雙向鍊錶實現了佇列的進出和棧的push和pop操作 首先是依然是給出雙向鍊錶節點nodetype public class nodetype public nodetype 下面給出了佇列的相關操作 public class doublelinkedlistqueue if rear nu...
鍊錶,棧和佇列
1.建立鍊錶 package com.zzw.鍊錶 非常基本的單項鍊表 author john public class node 新增乙個結點 node end new node d node n this while n.next null n.next end 刪除單向鍊錶中的結點 node ...
用鍊錶實現佇列和棧
1.定義佇列介面 public inte ce myqueue 2.設計介面的實現類 首先佇列是乙個容器,要設定容器的各種方法,我們需要一些原料,這裡我選擇兩個節點和乙個表示容器大小的n,頭節點first用於獲取佇列頭部元素,last指向佇列尾部,同時也作為乙個游標,來迴圈訪問佇列各個元素。關於方法...