数据结构——顺序表的逆置

  • 时间:
  • 浏览:
  • 来源:互联网

题目:请写一个算法将顺序存储结构的线性表(a1...an)逆置为(an...a1),要求使用最少的附加空间。

解析:可以理解为一个线性表内的交换问题。当n为奇数时,将第一个元素与最后一个元素进行交换,第二个元素与倒数第二个元素进行交换,以此类推,最中间的元素不用进行交换(n/2+1)。当n为偶数时,规则与奇数时一样,只是最中间两个元素也要进行交换(n/2 <----> n/2+1)。

核心代码:

//核心代码
void Inverse(SqList &L) {
	int i, temp;
	for (i = 0; i < L.length / 2; i++) {
		temp = L.elem[i];
		L.element[i] = L.elem[L.length - 1 - i];
		L.element[L.length - 1 - i] = temp;
	}
}
//c++版

定义结构体

typedef struct
{
int *elem;
int length;
} SqList;

 

本文链接http://www.dzjqx.cn/news/show-617066.html