周末好困 2024-03-19 23:42 采纳率: 80%
浏览 8
已结题

c语言线性表删除元素

img


想请教一下,线性表删除第i过元素,为什么最后输出总是删除第一个元素呢

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-19 23:42
    关注
    让阿豪来帮你解答,本回答参考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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 已采纳回答 3月21日
  • 创建了问题 3月19日

悬赏问题

  • ¥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 微信小程序前后端交互