请写一个算法将顺序存储结构的线性表逆置
时间: 2023-04-17 11:03:30 浏览: 96
算法如下:
1. 定义两个指针,分别指向线性表的第一个元素和最后一个元素。
2. 交换两个指针所指向的元素,并将指针向中间移动一位,直到两个指针相遇。
3. 线性表逆置完成。
具体实现代码如下:
void ReverseList(SqList &L)
{
int i, j, temp;
for (i = 0, j = L.length - 1; i < j; i++, j--)
{
temp = L.data[i];
L.data[i] = L.data[j];
L.data[j] = temp;
}
}
相关问题
请写一个算法将顺序存储结构的线性表(a1...an)逆置为(an...a1),要求使用最少的附加空间
可以使用两个指针,一个指向表头,一个指向表尾,然后交换它们所指向的元素,然后头指针向后移动,尾指针向前移动,直到头指针大于等于尾指针为止。具体实现如下:
void reverse(int a[], int n) {
int i, temp;
for (i = ; i < n / 2; i++) {
temp = a[i];
a[i] = a[n - i - 1];
a[n - i - 1] = temp;
}
}
其中,a[]为存储线性表的数组,n为线性表的长度。这个算法的空间复杂度为O(1),时间复杂度为O(n/2)。
请你以顺序表作为存储结构,写一个实现线性表就地逆置的算法
好的,以下是实现线性表就地逆置的算法:
```
void reverseList(int *list, int length) {
int temp;
for (int i = 0; i < length / 2; i++) {
temp = list[i];
list[i] = list[length - i - 1];
list[length - i - 1] = temp;
}
}
```
这个算法使用了顺序表作为存储结构,通过交换表头和表尾、表头+1和表尾-1、表头+2和表尾-2……的元素来实现就地逆置。