本文将详细介绍使用 Python 实现基于顺序存储结构的线性表,并提供完整代码和操作示例。

代码实现

class LinearList:
    def __init__(self, max_size):
        self.max_size = max_size
        self.length = 0
        self.data = [None] * max_size

    def is_empty(self):
        return self.length == 0

    def is_full(self):
        return self.length == self.max_size

    def resize(self, new_size):
        if new_size < self.length:
            raise ValueError('New size cannot be smaller than current length.')
        
        self.max_size = new_size
        new_data = [None] * new_size
        for i in range(self.length):
            new_data[i] = self.data[i]
        self.data = new_data

    def append(self, element):
        if self.is_full():
            self.resize(self.max_size * 2)
        self.data[self.length] = element
        self.length += 1

    def insert(self, position, element):
        if self.is_full():
            self.resize(self.max_size * 2)
        if position < 0 or position > self.length:
            raise ValueError('Invalid position.')
        
        for i in range(self.length, position, -1):
            self.data[i] = self.data[i-1]
        self.data[position] = element
        self.length += 1

    def delete(self, position):
        if position < 0 or position >= self.length:
            raise ValueError('Invalid position.')
        
        for i in range(position, self.length-1):
            self.data[i] = self.data[i+1]
        self.data[self.length-1] = None
        self.length -= 1

    def swap(self, position1, position2):
        if position1 < 0 or position1 >= self.length or position2 < 0 or position2 >= self.length:
            raise ValueError('Invalid positions.')
        
        self.data[position1], self.data[position2] = self.data[position2], self.data[position1]

    def find(self, element):
        for i in range(self.length):
            if self.data[i] == element:
                return i
        return -1

    def display(self):
        for i in range(self.length):
            print(self.data[i], end=' ')
        print()

# 测试
linear_list = LinearList(10)
print('初始线性表是否为空:', linear_list.is_empty())
print('初始线性表是否为满:', linear_list.is_full())

# 插入操作
for i in range(1, 11):
    linear_list.append(i)
print('插入10个元素后,线性表是否为空:', linear_list.is_empty())
print('插入10个元素后,线性表是否为满:', linear_list.is_full())
print('线性表中所有元素:')
linear_list.display()

# 在指定位置插入元素
linear_list.insert(2, 11)
print('在位置2插入元素后,线性表中所有元素:')
linear_list.display()

# 删除指定位置的元素
linear_list.delete(5)
print('删除位置5的元素后,线性表中所有元素:')
linear_list.display()

# 交换指定位置的元素
linear_list.swap(1, 3)
print('交换位置1和3的元素后,线性表中所有元素:')
linear_list.display()

# 查找元素
index = linear_list.find(5)
print('元素5的下标位置:', index)

# 逆序输出
reversed_list = linear_list.data[:linear_list.length][::-1]
print('逆序线性表中所有元素:')
for i in range(len(reversed_list)):
    print(reversed_list[i], end=' ')
print()

代码解释

  1. 类定义: LinearList 类定义了线性表的顺序存储结构。
  2. 初始化: __init__ 方法初始化线性表,设置最大容量 max_size、当前长度 length 和数据存储列表 data
  3. 判断空满: is_emptyis_full 方法分别判断线性表是否为空和是否为满。
  4. 调整大小: resize 方法允许调整线性表的大小,支持扩容,但不支持缩容。
  5. 尾部插入: append 方法在尾部插入一个元素,如果线性表已满则自动扩容。
  6. 指定位置插入: insert 方法在指定位置插入一个元素,需要保证位置有效,插入操作会将指定位置之后的元素后移。
  7. 指定位置删除: delete 方法删除指定位置的元素,需要保证位置有效,删除操作会将指定位置之后的元素前移。
  8. 交换元素: swap 方法交换两个指定位置的元素,需要保证位置有效。
  9. 元素查找: find 方法查找元素并返回其下标位置,如果元素不存在则返回 -1。
  10. 输出元素: display 方法输出线性表中所有元素。

测试用例

代码中的测试用例展示了线性表的常见操作,包括初始化、插入、删除、查找、交换、逆序输出等。你可以根据自己的需要修改测试用例,尝试不同的操作。

总结

本文提供了一个使用 Python 实现基于顺序存储结构的线性表的完整代码示例,并详细解释了代码逻辑和各个操作函数的功能。你可以在此基础上进行扩展和优化,例如实现链表、栈、队列等其他数据结构。

希望本文能帮助你理解 Python 中线性表的实现,并为你的数据结构学习提供参考。

Python实现顺序存储结构的线性表:完整代码及操作示例

原文地址: http://www.cveoy.top/t/topic/bzl2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录