数据结构作为计算机基础的必修内容,也是很多大型互联网企业面试的必考题。可想而知,它在计算机领域的重要性。
然而很多计算机专业的同学,都仅仅是了解数据结构的相关理论,却无法用代码实现各种数据结构。
<强>栈强>
<代码类="语言python ">堆栈类(对象): def __init__(自我,限制=10): 自我。堆栈=[]#存放元素 自我。限制=限制#栈容量极限 def推(自我,数据):#判断栈是否溢出 如果len (self.stack)祝辞=self.limit: 打印(“StackOverflowError”) 通过 self.stack.append(数据) def流行(自我): 如果self.stack: 返回self.stack.pop () 其他: 提高IndexError(流行从一个空栈)#空栈不能被弹出 def peek(自我):#查看堆栈的最上面的元素 如果self.stack: 返回self.stack [1] def is_empty(自我):#判断栈是否为空 返回不bool (self.stack) def大小(自我):#返回栈的大小 代码返回len (self.stack) >
<强>单链表强>
<代码类=坝镅詐ython”>“ 遇到问题没人解答?小编创建了一个Python学习交流QQ群:××× 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! “‘ 类节点: def __init__(自我、数据): 自我。data=https://www.yisu.com/zixun/data 自我。下一个=没有 类Linked_List: def __init__(自我): 自我。头=没有 def initlist(自我,data_list): #链表初始化函数 self.head=节点(data_list[0]) #创建头结点 temp=self.head 因为我在data_list[1]: #逐个为数据内的数据创建结点,建立链表 节点=节点(我) temp.next=节点 temp=temp.next def is_empty(自我):#判断链表是否为空 如果self.head.next==没有: print (Linked_list是空的) 还真 其他: 返回假 def get_length(自我):#获取链表的长度 temp=自我。头#临时变量指向队列头部 长度=0 #计算链表的长度变量 而临时!=没有: 长度=+ 1 temp=temp.next 返回长度#返回链表的长度 def插入(自我、关键值):#链表插入数据函数 如果key<0或key> self.get_length () 1: 打印(“插入错误”) temp=self.head 我=0 而i<=关键:#遍历找到索引值为关键的结点后,在其后面插入结点 pre=temp temp=temp.next 我+ 1=节点=节点(值) pre.next=节点 node.next=temp def print_list(自我):#遍历链表,并将元素依次打印出来 打印(“linked_list:“) temp=self.head new_list=[] 虽然临时不是没有: new_list.append (temp.data) temp=temp.next 打印(new_list) def删除(自我,键):#链表删除数据函数 如果key<0或key> self.get_length () 1: 打印(“插入错误”) 我=0 temp=self.head 而临时!=没有:#遍历找到索引值为关键的结点 pre=temp temp=temp.next 我+ 1=如果我==关键: pre.next=temp.next temp=没有 还真 pre.next=没有 def反向(自我):#将链表反转 prev=没有 当前=self.head 虽然目前的: next_node=current.next 电流。下一个=上一页 prev=当前 当前=next_node 自我。头=上一页代码>
<强>双链表强>
<代码类="语言python ">类节点(对象): #双向链表节点 def __init__(自我,项): 自我。项=项 自我。下一个=没有 自我。prev=没有 类DLinkList(对象): #双向链表 def __init__(自我): 自我。_head=没有 def is_empty(自我): #判断链表是否为空 回归自我。_head==没有 def get_length(自我): #返回链表的长度 坏蛋=self._head 数=0 当坏蛋!=没有: 数=数+ 1 坏蛋=cur.next 返回数 def旅行(自我): #遍历链表 坏蛋=self._head 当坏蛋!=没有: 打印(cur.item) 坏蛋=cur.next 打印(" ") def添加(自我,项): #头部插入元素 节点=节点(项) 如果self.is_empty (): #如果是空链表,将_head指向节点 自我。_head=节点 其他: #将节点的下一个指向_head的头节点 节点。下一个=self._head #将_head的头节点页的上一页指向节点 self._head。prev=节点 #将_head指向节点 自我。_head=节点 def append(自我,项): #尾部插入元素 节点=节点(项) 如果self.is_empty (): #如果是空链表,将_head指向节点 自我。_head=节点 其他: #移动到链表尾部 坏蛋=self._head 虽然cur.next !=没有: 坏蛋=cur.next #将尾节点坏蛋的未来指向节点 cur.next=节点 #将节点页的上一页指向坏蛋 节点。prev=坏蛋 def搜索(自我,项): #查找元素是否存在 坏蛋=self._head 当坏蛋!=没有: 如果cur.item==项目: 还真 坏蛋=cur.next 返回假 def插入(自我、pos、项目): #在指定位置添加节点 如果pos & lt;=0: self.add(项) elif pos祝辞(self.length () 1): self.append(项) 其他: 节点=节点(项) 坏蛋=self._head 数=0 #移动到指定位置的前一个位置 而数& lt;(pos-1): 数+=1 坏蛋=cur.next #将节点页的上一页指向坏蛋 节点。prev=坏蛋 #将节点的下一个指向坏蛋的下一个节点 节点。下一个=cur.next #将坏蛋的下一个节点页的上一页指向节点 cur.next。prev=节点 #将坏蛋的未来指向节点 cur.next=节点 def删除(自我,项): #删除元素 如果self.is_empty (): 返回 其他: 坏蛋=self._head 如果cur.item==项目: #如果首节点的元素即是要删除的元素 如果cur.next==没有: #如果链表只有这一个节点 自我。_head=没有 其他: #将第二个节点页的上一页设置为零 cur.next。prev=没有 #将_head指向第二个节点 自我。_head=cur.next 返回 当坏蛋!=没有: 如果cur.item==项目: #将坏蛋的前一个节点的下一指向坏蛋的后一个节点 cur.prev。下一个=cur.next #将坏蛋的后一个节点页的上一页指向坏蛋的前一个节点 cur.next。prev=cur.prev 打破 坏蛋=cur.next常见数据结构的Python实现(建议收藏)