使用順序表和煉表實現棧和佇列

2021-10-21 13:47:53 字數 2410 閱讀 8104

一、棧

棧的核心操作:

入棧:把元素放到棧裡

出棧:把最後進來的元素刪掉

取棧頂元素:獲取到最後乙個進來的元素的結果

使用順序表實現棧:

使用尾插操作表示入棧;使用尾刪操作表示出棧;使用根據下表獲取元素的操作表示取棧頂元素

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指向佇列尾部,同時也作為乙個游標,來迴圈訪問佇列各個元素。關於方法...