⑴输入一组整型元素序列,建立顺序表。 ⑵实现该顺序表的遍历。 ⑶在该顺序表中进行顺序查找某一元素,查找成功返回1,否则返回0。 ⑷判断该顺序表中元素是否对称,对称返回1,否则返回0。 ⑸实现把该表中所有奇数排在偶数之前,即表的前面为奇数,后面为偶数。 ⑹输入整型元素序列利用有序表插入算法建立一个有序表。 ⑺利用算法6建立两个非递减有序表并把它们合并成一个非递减有序表。用C语言编写一个主函数,调试上述算法。并显示运行结果
时间: 2023-04-06 10:02:38 浏览: 111
我可以回答这个问题。以下是C语言代码实现:
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
// 建立顺序表
void createList(SqList *L) {
int i, n;
printf("请输入元素个数:");
scanf("%d", &n);
printf("请输入%d个整数:", n);
for (i = 0; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
// 遍历顺序表
void traverseList(SqList L) {
int i;
printf("顺序表元素为:");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
// 顺序查找元素
int searchList(SqList L, int key) {
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == key) {
return 1;
}
}
return 0;
}
// 判断顺序表是否对称
int isSymmetric(SqList L) {
int i, j;
for (i = 0, j = L.length - 1; i < j; i++, j--) {
if (L.data[i] != L.data[j]) {
return 0;
}
}
return 1;
}
// 奇偶数排序
void sortList(SqList *L) {
int i, j, temp;
for (i = 0; i < L->length; i++) {
for (j = i + 1; j < L->length; j++) {
if (L->data[i] % 2 == 0 && L->data[j] % 2 == 1) {
temp = L->data[i];
L->data[i] = L->data[j];
L->data[j] = temp;
}
}
}
}
// 有序表插入算法
void insertList(SqList *L, int key) {
int i, j;
for (i = 0; i < L->length; i++) {
if (L->data[i] > key) {
for (j = L->length - 1; j >= i; j--) {
L->data[j + 1] = L->data[j];
}
L->data[i] = key;
L->length++;
return;
}
}
L->data[L->length] = key;
L->length++;
}
// 合并两个有序表
void mergeList(SqList La, SqList Lb, SqList *Lc) {
int i = 0, j = 0, k = 0;
while (i < La.length && j < Lb.length) {
if (La.data[i] <= Lb.data[j]) {
Lc->data[k++] = La.data[i++];
} else {
Lc->data[k++] = Lb.data[j++];
}
}
while (i < La.length) {
Lc->data[k++] = La.data[i++];
}
while (j < Lb.length) {
Lc->data[k++] = Lb.data[j++];
}
Lc->length = k;
}
int main() {
SqList L, L1, L2, L3;
int key;
createList(&L);
traverseList(L);
printf("请输入要查找的元素:");
scanf("%d", &key);
if (searchList(L, key)) {
printf("查找成功!\n");
} else {
printf("查找失败!\n");
}
if (isSymmetric(L)) {
printf("该顺序表对称!\n");
} else {
printf("该顺序表不对称!\n");
}
sortList(&L);
traverseList(L);
createList(&L1);
createList(&L2);
mergeList(L1, L2, &L3);
traverseList(L3);
return 0;
}
阅读全文