想请教一下,线性表删除第i过元素,为什么最后输出总是删除第一个元素呢
2条回答 默认 最新
关注
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
可能是你的删除算法有问题。下面是一份Python代码的示例,你可以参考一下:class ListEmptyError(Exception): def __init__(self, message): self.message = message class LinkedList: class Node: def __init__(self, data, next_node=None): self.data = data self.next = next_node def __init__(self): self.head = None def is_empty(self): return self.head is None def add_first(self, data): self.head = self.Node(data, self.head) def remove_first(self): if self.is_empty(): raise ListEmptyError("Can't remove from an empty list") data = self.head.data self.head = self.head.next return data def remove_at_index(self, index): if self.is_empty(): raise ListEmptyError("Can't remove from an empty list") elif index == 0: return self.remove_first() else: prev = None curr = self.head count = 0 while curr is not None and count < index: prev = curr curr = curr.next count += 1 if curr is None: raise IndexError("index out of range") data = curr.data prev.next = curr.next return data def __iter__(self): node = self.head while node is not None: yield node.data node = node.next
可以使用以下代码进行测试:
lst = LinkedList() lst.add_first(3) lst.add_first(2) lst.add_first(1) lst.remove_at_index(0) for item in lst: print(item)
输出:
2 3
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 急需求一个 手机抓包app支付链接脚本
- ¥15 byte[]转String后值为[object Object]
- ¥20 STM32 AD7734
- ¥15 mmrotate官方的test工具死循环
- ¥15 isolar-AB软件安装后打开出错
- ¥15 如何让usb软件在电脑拔插无记录
- ¥15 ecology9的待办推送外部系统
- ¥15 Mplus跑出来的数据只有原数据的一半
- ¥15 vue项目添加全局处理解决一些开发问题
- ¥40 微信小程序前后端交互