要求将算法1~6设计为3. 3. 4节定义的顺序表Dy

要求将算法1~6设计为3. 3. 4节定义的顺序表DynamicArrayList类的方法。

2.设计算法,将顺序表中存放的元素循环左移p位。即L(a_o,a_1,a_2···.a_p···..a_n-1变为L= (a_p·a_p+1····.a_n-1.a_o····a_p-1)。

答案
class DynamicArrayList:
    def __init__(self):
        self.data = []

    def reverse(self, left, right):
        """辅助函数:将data[left...right]原地逆置"""
        while left < right:
            self.data[left], self.data[right] = self.data[right], self.data[left]
            left+= 1
            right-= 1

    def left_shift_p(self, p):
        """循环左移p位,三次逆置法"""
        n = len(self.data)
        if n == 0:
            return
        p = p % n   # p大于表长时取模,处理p>=n的情况
        self.reverse(0, p-1)
        self.reverse(p, n-1)
        self.reverse(0, n-1)

题目信息

题号:8226
题型:简答题
知识点:Python
难度:普通