1.在顺序表中如何实现线性表的就地逆置,也就是把数据元素序列a0, a1, …, an-1逆置为an-1,…,a1, a0。(注意:就地逆置也就是原地工作,要求空间复杂度为O(1)。)
思路:
顺序表的就地逆置:假设表长为n,元素存放在list[0]~list[n-1],逆置的方法就是:for (i=0; i<n/2; i++) 交换list[i]与list[n-1-i]的值;
2.在顺序表中如何实现数据元素序列的循环左移。比如,将顺序表中的序列循环左移 p(0<p<n)个位置,即由(a0, a1, …, an-1)变换为(ap, ap+1, …, an-1, a0, a1, …, ap-1)。
思路
顺序表的循环左移:左移p个位置。实现高效的循环左移p个位置的方法:调用三次就地逆置算法:
1.先将全部n个元素逆置;2.然后将前面的n-p个元素逆置;3.最后将后面的p个元素逆置。