Python 如何用列表實現棧和佇列
前面學習了列表的基礎知識,本著學以致用的原則,就想著如何通過列表來實現資料結構棧和佇列。
1.棧結構,其實就是一個後進先出的一個線性表,只能在棧頂壓入或彈出元素。用列表表示棧,則向棧中壓入元素,可以用列表的append()方法來實現,彈出棧頂元素可以用列表的pop()方法實現。
2.佇列,其實就是一個先進先出的線性表,只能在隊首執行刪除操作,在隊尾執行插入操作。用列表表示佇列,可以用append()方法實現在隊尾插入元素,用pop(0)方法實現在隊首刪除元素。>>> x=[] #建立一個空列表,此處表示棧 >>> x [] >>> x.append('a') #壓入元素'a' >>> x ['a'] >>> x.append('b') #壓入元素'b' >>> x ['a', 'b'] >>> x.pop() #彈出棧頂元素'b' 'b' >>> x ['a'] >>> x.pop() #彈出棧頂元素'a' 'a' >>> x [] >>> x.pop() #試圖對一個空棧做彈出操作,會報異常 Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: pop from empty list
細心觀察剋制,上面是把列表的最左邊當做了佇列的首,把最右邊當做了尾(左首右尾)。也可以通過列表實現相反的佇列,右首左尾。用insert(0,...)方法實現隊尾插入元素,用pop()實現隊首刪除元素。(這樣做是有意義的,人們習慣於把佇列右邊作為首的)>>> x=[] >>> x.append('a') >>> x ['a'] >>> x.append('b') >>> x ['a', 'b'] >>> x.pop(0) 'a' >>> x.pop(0) 'b' >>> x.pop(0) Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: pop from empty list
>>> x=[] >>> x.insert(0,'a') >>> x ['a'] >>> x.insert(0,'b') >>> x ['b', 'a'] #是不是發現列表順序和上面正好相反 >>> x.pop() 'a' >>> x.pop() 'b'
備註:當然也可以使用insert(0,...)和pop(0)兩個方法實現棧,不過這樣不太符合人們的直觀感受。
相關推薦
Python用列表實現棧,佇列(二)
用列表實現佇列 佇列和棧實現的功能差不多,無非是入佇列,出佇列,佇列長度等等。其中,入佇列可以用列表的append()來實現,出佇列可以使用pop(0)來實現。由於這個實現方法比較簡單,因此它也是最低效的。append方法入佇列和棧實
Python用列表實現棧,佇列(一)
用列表實現棧 棧方法 列表實現 S.push() L.append() S.pop() L.pop() S.top()
python_用列表實現棧和佇列
棧 棧的結構: 棧是先進後出(LIFO-first in last out); 類似於往箱子裡面放書; 程式碼實現如下: (實際應用中這樣太麻煩,將來會用類實現) 佇列 佇列結構: 佇列是
Python 如何用列表實現棧和佇列
前面學習了列表的基礎知識,本著學以致用的原則,就想著如何通過列表來實現資料結構棧和佇列。 1.棧結構,其實就是一個後進先出的一個線性表,只能在棧頂壓入或彈出元素。用列表表示棧,則向棧中壓入元素,可以用列表的append()方法來實現,彈出棧頂元素可以用列表的pop()方法實
python中列表的操作以及使用列表實現棧和佇列
>>> a = [1, 2, 3, 4, 5, 6]>>> a.append(45)>>> a[1, 2, 3, 4, 5, 6,45]首先我們建立了一個列表 a。然後呼叫列表的方法 a.append(45) 新增元素 4
Python將列表作為棧和佇列 Collections中的各種方法
Collections中的各種方法 閱讀目錄(Content) 一、各種方法介紹 二、程式碼部分 回到頂部(go to top) 一、各種方法介紹 Counter 統計個數 elements&n
棧和佇列(用C++實現棧和佇列)
棧是一種後進先出的線型結構,C++實現棧的程式碼如下: #include <iostream> using namespace std; #define MAXLEN 50 typede
python列表練習-用python實現棧和佇列
1.棧的工作原理:先進後出 入棧 出棧 棧頂元素 棧的長度 棧是否為空 stack = [] info = """ 棧操作 1.入棧 2.出棧 3.棧頂元素 4.棧的長度 5.棧是否為空 """ while True:
Python 如何用列表實現棧和隊列?
pen 彈出 module trace 執行 方法 ace 元素 異常 1.棧結構,其實就是一個後進先出的一個線性表,只能在棧頂壓入或彈出元素。用列表表示棧,則向棧中壓入元素,可以用列表的append()方法來實現,彈出棧頂元素可以用列表的pop()方法實現。 1 &g
Python中的連結串列之單向連結串列實現棧和佇列
Python中除了列表,還有連結串列這樣的基礎資料結構,之前我們都是介紹用列表實現棧、佇列這樣的資料結構的,接下來我們看一下用連結串列實現的棧和佇列。 既然列表已經可以實現棧和隊列了,那麼連結串列又有什麼存在的意義呢?當然是因為列表有一些明細的缺點: 記憶體的
python實現棧和佇列
利用python列表的操作,利用選單的形式實現棧和佇列 棧: stack=[] def push(): stack.append(input('enter: ').strip()) def
作業1#python用列表實現多用戶登錄,並有三次機會
循環 HA 成功 NPU name 單用戶 登錄 [1] and 1 username = ["juebai","haha"] 2 password = [123,456] 3 count = 0 4 while count < 3: 5 _use
js 實現棧和佇列
js實現棧或者佇列有兩種方式: 1.陣列:陣列本身提供棧方法(push,pop),佇列方法(push,shift)。 程式碼實現(棧): /*=======棧結構=======*/ var stack=function(){ this.data=[] this.push=push
C語言實現棧和佇列(棧和佇列的基本操作)
棧: 棧:棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。 特點:先進後出 stack.h #pragma once #include <stdio.h> #include <
python 語法:實現棧與佇列
學資料結構的時候,用c語言實現棧與佇列可不容易。用python只要幾行程式碼就可以了,基於列表實現棧,基於雙端列表實現佇列。 棧(後進先出) stack = [1, 2, 3, 4] stack.append(5) # 入棧 stack.pop() # 出棧 佇列(先進先
python資料結構之棧和佇列
1.功能實現 之前文章有,可以點開看看 棧 佇列 2.應用(1)括號匹配及字尾表示式 class Solution(object): def isValid(self, s): """ :type s: str :rtype
Java實現棧和佇列
棧:LIFO(後進先出) 佇列:FIFO(先進先出) 棧的順序儲存結構實現: /** * 基於陣列實現的順序棧 * @param <E> */ public class Stack<E> { private Object[]
C++實現棧和佇列(Linux環境)
Stack.h #pragma once #include<iostream> using namespace std; #include<assert.h> //靜態棧 te
利用容器介面卡實現棧和佇列
利用模板實現分別實現一個順序表和連結串列,再用著兩個順序錶鏈表來實現棧和佇列的容器介面卡 stack.h #pragma once #include"Seqlist.h" #include"list.h" //使用容器介面卡實現棧 template<class
用JavaScript實現棧與佇列
翻譯:瘋狂的技術宅 原文:code.tutsplus.com/articles/da… 說明:本專欄文章首發於公眾號:jingchengyideng 。 棧和佇列是web開發中最常用的兩種資料結構。絕大多數使用者,甚至包括web開發人員,都不知道這個驚人的事實。如果你是一個