创建一个链表

创建一个链表

1 问题

在数据结构的课堂上我们学习了关于单链表的许多知识,那么如何创建一个链表呢?

2 方法

链表:链表是由一系列节点组成的元素的集合。每个节点包含两部分,数据域item和指向下一个节点的指针next。通过节点之间的相互连接 ,最终串联成一个链表。

创建链表有两种方式:

头插法:先建立一个空链表,然后创建新结点,将输入的数据存放在新结点的数据域中,再将新结点插入到当前链表的表头,即头结点之后

尾插法:尾插法是将新结点插入到当前链表的表尾,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点

代码清单 1

代码语言:javascript复制class Node:

def __init__(self, data):

self.data = data

self.next = None

def get_data(self):

return self.data

class List:

def __init__(self, head):

self.head = head

def is_empty(self):

return self.get_len() == 0

def get_len(self):

length = 0

temp = self.head

while temp is not None:

length += 1

temp = temp.next

return length

def append(self, node):

temp = self.head

while temp.next is not None:

temp = temp.next

temp.next = node

def delete(self, index):

if index < 1 or index > self.get_len():

print("给定位置不合理")

return

if index == 1:

self.head = self.head.next

return

temp = self.head

cur_pos = 0

while temp is not None:

cur_pos += 1

if cur_pos == index-1:

temp.next = temp.next.next

temp = temp.next

def insert(self, pos, node):

if pos < 1 or pos > self.get_len():

print("插入结点位置不合理")

return

temp = self.head

cur_pos = 0

while temp is not Node:

cur_pos += 1

if cur_pos == pos-1:

node.next = temp.next

temp.next =node

break

temp = temp.next

def reverse(self, head):

if head is None and head.next is None:

return head

pre = head

cur = head.next

while cur is not None:

temp = cur.next

cur.next = pre

pre = cur

cur = temp

head.next = None

return pre

def print_list(self, head):

init_data = []

while head is not None:

init_data.append(head.get_data())

head = head.next

return init_data

if __name__=='__main__':

head=Node('head')

link=List(head)

for i in range(10):

node=Node(i)

link.append(node)

print(link.print_list(head))

3 结语

针对创建单链表的问题,提出使用头插法尾插法的方法,通过实验,证明该方法是有效的,未来可以继续研究有没有另外的方法可以更好的创建链表。

相关推荐

孕妇多吃鸡长胎不长肉 吃鸡需注意4点
365bet限制投注

孕妇多吃鸡长胎不长肉 吃鸡需注意4点

📅 09-11 👁️ 2824
林俊杰潘玮柏首度北京鸟巢同台,改编《不潮不用花钱》引爆演唱会热潮
70英尺等于多少米?
365bet限制投注

70英尺等于多少米?

📅 11-04 👁️ 3621