欢迎光临散文网 会员登陆 & 注册

Chapter 2

2023-08-17 21:11 作者:就叫大嘴吧  | 我要投稿

已知在一维数组A[m + n]中依次存放两个线性表(a1,a2, a3,...,am)和(b1,b2,b3,...,bn,)。编写一个函数,将数组中两个顺序表的位置互换,即将(b1,b2,b3,...,bn,)放在(a1,a2, a3,...,am)的前面。

#include<stdio.h>
#include<stdlib.h>

#define Max 100

struct SqList{
	int data[Max] = {1, 3, 5, 7, 9, 11, 13};
	int length = 7;
};

void show(SqList s){
	if(s.length == 0){
		printf("线性表为空");
		return;
	}
	for(int i = 0; i < s.length; i++){
		printf("%d	", s.data[i]);
	}
	printf("\n"); 
}

void reverse(SqList &s, int m, int n){
	int temp;
	for(int i = m; i < (m + n) / 2; i++){
		temp = s.data[i];
		s.data[i] = s.data[m + n - i - 1];
		s.data[m + n - i - 1] = temp;
	}
	show(s);
}

// 注意传递的参数 
void change(SqList &s, int m, int n){
	printf("整个逆置:\n");
	reverse(s, 0, m + n);
	
	printf("前 %d 个逆置:\n", n);
	reverse(s, 0, n);
	
	printf("后 %d 个逆置:\n", m);
	reverse(s, n, n + m);
}

int main(){
	
	SqList s;
	
	printf("互换前:");
	show(s);
	
	change(s, 3, 4);
	
	printf("互换后:");
	show(s);
	
	return 0;
} 



Chapter 2的评论 (共 条)

分享到微博请遵守国家法律