网上查了这个题的代码,没有任何完整的能正确运行的,因为有点不太懂所以动手随便写了个能运行的调试看过程,分享给需要的朋友。
#include<iostream>
using namespace std;
#define MaxSize 7
typedef struct
{
int data[MaxSize];
int length;
}Sqlist;
void InitList(Sqlist &L)
{
L.length = 0;
}
void move(Sqlist &L) { //L要改变所以用引用型
int temp;
int i = 0, j = L.length-1;
temp = L.data[i];
while (i<j) {
/*关键步骤开始*/
while (i < j&&L.data[j] > temp)
j--;
//j从左往右扫描,当来到第一个比temp小的元素时停止 ,并且每走一步都要判断i是否小于j,这个判断容易遗漏。
if (i < j) { //检测看是否已仍满足i < j,这一步同样很重要
L.data[i] = L.data[j]; //移动元素。
i++; //i右移一位。
}
while (i < j&&L.data[i] < temp) i++; //与上边的处理类似。
if (i < j) { //与上边的处理类似。
L.data[j] = L.data[i]; //与上边的处理类似。
j--;
}
/*关键步骤结束*/
}
L.data[i] = temp; //将表首元素放在最终位置。
}
int main()
{
Sqlist L;
int k = 0,m=0;
InitList(L);
for