經過這短短乙個月,真的感受到自己的無知與懦弱,比如沒有確定的事情,就敢跟小可愛承諾,自己的不成熟導致了這一兩年的倒退,這乙個月暫時就不實習了,好好把知識補一補,然後將python好好學一下,簡單會sql是沒有未來的,不管在哪個企業,都是以營利為目的,小可愛這麼拼,每天5點多就開始上班,你心裡難道一點就不愧疚嗎?
你願意留在北京,就代表你選了最難得路走,還想懶,還想混,還想著好事天上飄下來,這是不可能的,從今天開始,把每天的事情記錄一下,不記錄完整不准睡覺,醒來吧,不能再裝睡了。
-- 今天早上在快手啥也沒有幹,下午回來,睡也不睡,玩了兩三個小時,也沒有好好午休,也沒有好好看書,幾乎沒有什麼所得,以前是這樣,但是以後不能這樣了,現在17:53,晚飯也不吃了,這個月乙個是把開課吧的所有課程全部學完,乙個是把實驗樓的課程學習完畢,沒有撤退可言。
看到小可愛的容顏,我知道自己這輩子不能辜負人家,不能走我爸的後路。
-- python3簡明教程--python資料結構
先把資料結構刷了一遍:
棧(stack)又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。
棧的介紹
棧允許進行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動;棧中元素個數為零時稱為空棧。插入一般稱為進棧(push),刪除則稱為退棧(pop)。
由於堆疊資料結構只允許在一端進行操作,因而按照後進先出(lifo, last in first out)的原理運作。棧也稱為後進先出表。
這個**,我們可以看到整個資料結構的變化過程。可以通過左下角的按鈕調慢演示過程。可能也自己動手 code 實現了過程,那麼再在**上演示一下元素的各種操作過程,會帶來一些更直觀的印象。
class stack(object):
definit(self, limit=10):
self.stack = # 存放元素
self.limit = limit # 堆疊的容量極限
def pop(self):
if self.stack:
return self.stack.pop()
else:
raise indexerror("pop from an empty stack")
def peek(self):
if self.stack:
return self.stack[-1]
def is_empty(self):
return not bool(self.stack)
def size(self):
return len(self.stack)
def banlanced_parentheses(parentheses):
stack = stack(len(parentheses))
for parenthe in parentheses:
if parenthe == '(':
stack.push(parenthe)
elif parenthe == ")":
if stack.is_empty():
return false
stack.pop()
return stack.is_empty()
ifname== "main":
examples = ["(((()))", "(())", "(()))"]
print("blanced parentheses demonstraction:\n")
for example in examples:
print(example + ": " + str(banlanced_parentheses(example)))
鍊錶:鍊錶分為單鏈表和雙鏈表兩種。在接下來的內容裡,我們將逐步介紹單鏈表的具體功能是如何實現的。
建立 node 類
class node:
definit(self, data):
self.data = data
self.next = none
class linklist:
definit(self, head=none): # 鍊錶初始化
self.head = head
def is_empty(self):
"""判斷鍊錶是否為空"""
# bool() 函式只返回 true 和 false
return not self.head
def insert(self, position, new_element):
"""在鍊錶中指定索引處插入元素"""
if position < 0 or position > self.get_length():
raise indexerror("insert 插入時, key值超出了範圍")
temp = self.head
### 將插入元素的next元素指向老的頭結點,並將新的元素賦值給頭結點
if position == 0:
new_element.next = temp
self.head = new_element
return
i = 0
### 遍歷找到索引值為position的結點,在其後面插入結點
while i < position:
pre = temp
temp = temp.next
i += 1
pre.next = new_element
new_element.next = temp
def remove(self, position):
"""刪除指定索引的鍊錶元素"""
if position < 0 or position > self.get_length() - 1:
raise indexerror("刪除元素的位置超出範圍")
i = 0
temp = self.head
### 遍歷找到索引值的position 的結點
while temp != none:
if position == 0:
self.head = temp.next
temp.next = none
return true
pre = temp
temp = temp.next
i += 1
if i == position:
pre.next = temp.next
temp.next = none
return
def get_length(self):
"""返回鍊錶的長度"""
temp = self.head
# 計算鍊錶的長度變數
length = 0
while temp != none:
length = length + 1
temp = temp.next
# 返回鍊錶長度
return length
def print_list(self):
print("linked_list:")
temp = self.head
while temp is not none:
print(temp.data)
temp = temp.next
def reverse(self):
"""將鍊錶反轉"""
prev = none
current = self.head
while current:
next_node = current.next
current.next = prev
prev = current
current = next_node
self.head = prev
def initlist(self, data_list):
"""將列表轉化為鍊錶"""
### 建立頭結點
self.head = node(data_list[0])
temp = self.head
### 逐個為資料建立結點,建立鍊錶
for i in data_list[1:]:
node = node(i)
temp.next = node
temp = temp.next
def swapnodes(self, d1, d2):
prevd1 = none
prevd2 = none
if d1 == d2:
return
else:
d1 = self.head
while d1 is not none and d1.data != d1:
prevd1 = d1
d1 = d1.next
d2 = self.head
while d2 is not none and d2.data != d2:
prevd2 = d2
d2 = d2.next
if d1 is none and d2 is none:
return
if prevd1 is not none:
prevd1.next = d2
else:
self.head = d2
if prevd2 is not none:
prevd2.next = d1
else:
self.head = d1
temp = d1.next
d1.next = d2.next
d2.next = temp
佇列 棧與鍊錶
佇列,顧名思義,就像排隊一樣,我們只能在隊首刪除,在隊尾增加。佇列是一種先進先出 fifo 的資料結構。參考 佇列的解析與c語言實現 棧,可以理解為乙個儲物的地方,且只有乙個出口,先放進去的東西最後才能拿出來 因為被後面放進去的東西擋住了 棧作為一種 資料結構 是一種 只能在一端進行插入和刪除操作 ...
佇列 棧與鍊錶
一 佇列 佇列,顧名思義,就像排隊一樣,我們只能在隊首刪除,在隊尾增加。佇列是一種先進先出 fifo 的資料結構。參考 佇列的解析與c語言實現三 鍊錶 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序是通過鍊錶中的指標鏈結次序實現的。鍊錶由一系列結點 鍊錶中每乙個元素稱為結點 組...
棧 陣列與鍊錶實現
棧的實現一般由陣列與鍊錶實現,但陣列實現較為常見,鍊錶實現一般不常用。以下給出兩種實現方式的完整 一 陣列實現 注意要點 1.棧為空時 top 1 2.棧滿時 top capacity 如下 adt stack 儲存結構 陣列 struct stackrecord typedef stackreco...