分别使用头插法和尾插法创建链表(python)

分别使用头插法和尾插法创建链表(python)

一、头插法

class Node:
    def __init__(self, item=0):
        self.item = item
        self.next = None
class Solution:
    def create_linklist_head(self):
        x = int(input('input a number(-1 to quit):'))
        head = None
        while x!=-1:
            node=Node(x)
            node.next=head
            head=node
            x = int(input('input a number(-1 to quit):'))
        return head
    def my_print(self,P):
        print('输出',end=':')
        while P:
            print(P.data,end=',')
            P=P.next

运行效果

S=Solution()
p=S.create_linklist_head()
S.my_print(p)

#########
input a number(-1 to quit):1
input a number(-1 to quit):2
input a number(-1 to quit):3
input a number(-1 to quit):-1
输出:3,2,1,

二、尾插法

class Node:
    def __init__(self,data=0):
        self.data=data
        self.next=None
class Solution:
    def create_linklist_tail(self):
        x=int(input('input a number(-1 to quit):'))
        head=Node()
        p=head
        while x!=-1:
            node=Node(x)
            p.next=node
            p=node
            x = int(input('input a number(-1 to quit):'))
        return head.next
        #如果return head,则会有一个头节点

运行效果

S=Solution()
p=S.create_linklist_tail()
S.my_print(p)

#########
input a number(-1 to quit):1
input a number(-1 to quit):2
input a number(-1 to quit):3
input a number(-1 to quit):-1
输出:1,2,3,

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
头插法尾插法链表中两种常见的插入方式,它们的区别在于插入的位置不同。 头插法是将新节点插入到链表的头部,也就是作为新的头节点,而原来的头节点成为了第二个节点。这种方式可以快速在链表头部插入新节点,但是会改变链表的结构。 尾插法是将新节点插入到链表的尾部,也就是作为新的尾节点,而原来的尾节点的next指针指向了新节点。这种方式可以保持链表的结构不变,但是在插入新节点时需要遍历整个链表,效率较低。 下面是头插法尾插法Python代码示例: 1.头插法 ```python class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def insert_at_beginning(self, data): new_node = Node(data) new_node.next = self.head self.head = new_node def print_list(self): temp = self.head while temp: print(temp.data, end=" ") temp = temp.next # 创建链表 llist = LinkedList() # 插入节点 llist.insert_at_beginning(3) llist.insert_at_beginning(2) llist.insert_at_beginning(1) # 打印链表 llist.print_list() # 输出:1 2 3 ``` 2.尾插法 ```python class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def insert_at_end(self, data): new_node = Node(data) if self.head is None: self.head = new_node return last = self.head while last.next: last = last.next last.next = new_node def print_list(self): temp = self.head while temp: print(temp.data, end=" ") temp = temp.next # 创建链表 llist = LinkedList() # 插入节点 llist.insert_at_end(1) llist.insert_at_end(2) llist.insert_at_end(3) # 打印链表 llist.print_list() # 输出:1 2 3 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值