problem-solving-with-algorithms-and-data-structure-usingpython(使用python解决算法和数据结构) -- 基本数据结构(一)...
生活随笔
收集整理的這篇文章主要介紹了
problem-solving-with-algorithms-and-data-structure-usingpython(使用python解决算法和数据结构) -- 基本数据结构(一)...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 什么是線性數據結構?
棧,隊列,deques, 列表是一類數據的容器,它們數據項之間的順序由添加或刪除的順序決定。一旦一個數據項被添加,它相對于前后元素一直保持該位置不變。諸如此類的數據結構被稱為線性數據結構。?
2. 什么是棧?
棧(有時稱為“后進先出棧”)是一個項的有序集合,其中添加移除新項總發生在同一端。這一端通常稱為“頂部”。與頂部對應的端稱為“底部”。 實際應用: 每個 web 瀏覽器都有一個返回按鈕。當你瀏覽網頁時,這些網頁被放置在一個棧中(實際是網頁的網址)。你現在查看的網頁在頂部,你第一個查看的網頁在底部。如果按‘返回’按鈕,將按相反的順序瀏覽剛才的頁面。 Stack() 創建一個空的新棧。 它不需要參數,并返回一個空棧。push(item)將一個新項添加到棧的頂部。它需要 item 做參數并不返回任何內容。pop() 從棧中刪除頂部項。它不需要參數并返回 item 。棧被修改。peek() 從棧返回頂部項,但不會刪除它。不需要參數。 不修改棧。isEmpty() 測試棧是否為空。不需要參數,并返回布爾值。size() 返回棧中的 item 數量。不需要參數,并返回一個整數。 棧的一些相關操作3. python實現棧
class Stack:def __init__(self):self.items = []def isEmpty(self):return self.items == []def push(self, item):self.items.append(item)def pop(self):return self.items.pop()def peek(self):return self.items[-1]def size(self):return len(self.items)s = Stack() print(s.isEmpty()) # True s.push(4) s.push('dog') print(s.peek()) # dog s.push(True) print(s.size()) # 3 print(s.isEmpty()) # False s.push(8.4) print(s.pop()) # 8.4 s.pop() print(s.size()) # 24. 簡單括號匹配
class Stack:def __init__(self):self.items = []def isEmpty(self):return self.items == []def push(self, item):self.items.append(item)def pop(self):return self.items.pop()def peek(self):return self.items[-1]def size(self):return len(self.items)def parChecker(symbolString):s = Stack()balanced = Trueindex = 0while index < len(symbolString) and balanced:symbol = symbolString[index]if symbol == '(':s.push(symbol)else:if s.isEmpty():balanced = Falseelse:s.pop()index += 1return balanced and s.isEmpty()print(parChecker('((())()())')) print(parChecker('()(((()(()())))'))5. 符號匹配? ()、[]、{}
class Stack:def __init__(self):self.items = []def isEmpty(self):return self.items == []def push(self, item):self.items.append(item)def pop(self):return self.items.pop()def peek(self):return self.items[-1]def size(self):return len(self.items)def parChecker(symbolString):s = Stack()balanced = Trueindex = 0while index < len(symbolString) and balanced:symbol = symbolString[index]if symbol in '([{':s.push(symbol)else:if s.isEmpty():balanced = Falseelse:top = s.pop()if not '([{'.index(top) == ')]}'.index(symbol):balanced = Falseindex += 1return balanced and s.isEmpty()print(parChecker('{({}){}([][])}')) print(parChecker('[{()]'))6. 十進制轉換成二進制
class Stack:def __init__(self):self.items = []def isEmpty(self):return self.items == []def push(self, item):self.items.append(item)def pop(self):return self.items.pop()def peek(self):return self.items[-1]def size(self):return len(self.items)def divideBy2(decNumber):remstack = Stack()while decNumber > 0:rem = decNumber % 2remstack.push(rem)decNumber = decNumber // 2binString = ''while not remstack.isEmpty():binString = binString + str(remstack.pop())return binString print(divideBy2(11)) print(divideBy2(42))7. 十進制轉換成任意進制
class Stack:def __init__(self):self.items = []def isEmpty(self):return self.items == []def push(self, item):self.items.append(item)def pop(self):return self.items.pop()def peek(self):return self.items[-1]def size(self):return len(self.items)def divideBy2(decNumber,base):'''十進制數轉換成任意進制(16以下):param decNumber: 十進制數:param base: 要轉換成多少進制:return: 結果'''digits = '0123456789ABCDEF' # 假如余數為13,則通過13索引找到Dremstack = Stack()while decNumber > 0:rem = decNumber % baseremstack.push(rem)decNumber = decNumber // basenewString = ''while not remstack.isEmpty():newString = newString + digits[remstack.pop()]return newString print(divideBy2(11,8)) print(divideBy2(42,16))?
轉載于:https://www.cnblogs.com/BlameKidd/p/9427890.html
總結
以上是生活随笔為你收集整理的problem-solving-with-algorithms-and-data-structure-usingpython(使用python解决算法和数据结构) -- 基本数据结构(一)...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8 .5 .5 创建操作员
- 下一篇: python综合学习一之多线程