数据结构算法题:有一个顺序表L,其元素为整形数据,设计一个算法,将L中所有小于表头元素的整数放在前半部分,大于表头元素的整数放在后半部分。

本文提供了一段C++代码,用于解决一个数据结构问题:将顺序表中所有小于表头元素的整数移动到前半部分,大于表头元素的整数移动到后半部分。代码包括初始化列表、移动元素的关键步骤以及主函数进行输入输出的演示。
摘要由CSDN通过智能技术生成
网上查了这个题的代码,没有任何完整的能正确运行的,因为有点不太懂所以动手随便写了个能运行的调试看过程,分享给需要的朋友。
#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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值