6-2 在单链表中增加或删除结点操作

6-2 在单链表中增加或删除结点操作 (40 分)
在单链表类定义中,包含单链表的一些常见操作方法,请补充插入结点方法和删除结点的方法

函数接口定义:

 def Insert(self, i, e):  # 在线性表中序号i位置插入元素e
 def Delete(self, i):  # 在线性表中删除序号i位置的元素

裁判测试程序样例:

class LinkNode:  # 单链表结点类
    def __init__(self, data=None):  # 构造函数
        self.data = data  # data属性
        self.next = None  # next属性

class LinkList:  # 单链表类
    def __init__(self):  # 构造函数
        self.head = LinkNode()  # 头结点head
        self.head.next = None

    def geti(self, i):  # 返回序号为i的结点
        p = self.head
        j = -1
        while j < i and p is not None:
            j += 1
            p = p.next
        return p

    def Add(self, e):  # 在线性表的末尾添加一个元素e
        s = LinkNode(e)  # 新建结点s
        p = self.head
        while p.next is not None:  # 查找尾结点p
            p = p.next
        p.next = s;  # 在尾结点之后插入结点s

            def getsize(self):  # 返回长度
        p = self.head
        cnt = 0
        while p.next is not None:  # 找到尾结点为止
            cnt += 1
            p = p.next
        return cnt

    def __getitem__(self, i):  # 求序号为i的元素
        assert i >= 0  # 检测参数i正确性的断言
        p = self.geti(i)
        assert p is not None  # p不为空的检测
        return p.data

    def __setitem__(self, i, x):  # 设置序号为i的元素
        assert i >= 0  # 检测参数i正确性的断言
        p = self.geti(i)
        assert p is not None  # p不为空的检测
        p.data = x

    def GetNo(self, e):  # 查找第一个为e的元素的序号
        j = 0
        p = self.head.next
        while p is not None and p.data != e:
            j += 1  # 查找元素e
            p = p.next
        if p is None:
            return -1  # 未找到时返回-1
        else:
            return j  # 找到后返回其序号
                
    def display(self):  # 输出线性表
        p = self.head.next
        while p is not None:
            print(p.data, end=' ')
            p = p.next;
        print()
     /* 你的代码将放在这里 */
     /* 你的代码将放在这里 */

if __name__ == '__main__':
    L = LinkList()
    for i in range(1, 6):
        L.Add(i)
    print("L: ", end=''), L.display()
    print("在序号0前增加元素9")
    L.Insert(0,9)
    print("L: ", end=''), L.display()
    print("删除序号1的元素")
    L.Delete(1)
    print("L: ", end=''), L.display()

输入样例:
在这里给出一组输入。例如:
没有输入

输出样例:
在这里给出相应的输出。例如:
L: 1 2 3 4 5
在序号0前增加元素9
L: 9 1 2 3 4 5
删除序号1的元素
L: 9 2 3 4 5

Python解析:

def Insert(self, i, e):  # 在线性表中序号i位置插入元素e
    t=LinkNode()
    t.Add(9)
    t.next=self.next
    self.next=t

def Delete(self, i):  # 在线性表中删除序号i位置的元素
    self.next= not self.next
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微__凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值