已知线性表LA={52,18,2,3,5,9,15,60}(长度30)和LB={14,12,3,25,59,15}(长度10)分别表示两个集合A和B。设计算法实现如下操作: (1)生成LA、LB; (2)求集合A=A∪B,即将线性表LB中存在而LA中不存在的数据元素插入到表LA中数据元素的后面。 (3)删除大于50的数; (4)对新LA进行升序排列; (5)查找25、3以及60的位置。写出完整C语言数据结构的代码
时间: 2023-07-14 21:12:04 浏览: 72
. 修改字符串");
System.out.println("4. 查看列表");
System.out.println("5. 取部分字符串");
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 40 // 线性表最大长度
typedef struct {
System.out.println("6. 判断相等");
System.out.println("7. 去空格");
System.out.println("8. int data[MAXSIZE]; // 存储元素的数组
int length; // 当前线性表长度
} SqList 判断是否为空值");
System.out.println("9. 大小写转换");
System.out.println("0. 退出");
;
// 初始化线性表
void InitList(SqList *L) {
L->length = 0;
}
// 在线 int choice = scanner.nextInt();
scanner.nextLine();
switch (choice) {
case 1:
System.out.println("请输入性表末尾插入元素
void ListInsert(SqList *L, int elem) {
if (L->length ==要添加的字符串:");
String str = scanner.nextLine();
add(str);
System.out.println("添加成功!");
break;
MAXSIZE) { // 线性表已满
printf("The list is full.\n");
return;
}
L-> case 2:
System.out.println("请输入要删除的字符串序号:");
int index = scanner.nextInt() - 1;
scanner.nextLine();
if (index < 0 || index >= size()) {
System.out.println("序号无效data[L->length++] = elem;
}
// 从线性表中删除指定位置的元素
void ListDelete(Sq!");
} else {
remove(index);
System.out.println("删除成功!");
}
break;
case 3:
SystemList *L, int index) {
if (index < 1 || index > L->length) { // 判断删除位置是否合法
printf("Invalid index.\n");
return;
}
for (int i = index; i < L->length;.out.println("请输入要修改的字符串序号:");
index = scanner.nextInt() - 1;
scanner.nextLine();
if i++) { // 后面的元素依次前移
L->data[i-1] = L->data[i];
(index < 0 || index >= size()) {
System.out.println("序号无效!");
} else {
System.out }
L->length--;
}
// 对线性表进行升序排列
void AscendingSort(SqList *L) {
.println("请输入新的字符串:");
str = scanner.nextLine();
set(index, str);
System.out.println("修改成功!");
for (int i = 0; i < L->length-1; i++) {
for (int j = i+1 }
break;
case 4:
printList();
break;
case 5:
System.out.println("请输入; j < L->length; j++) {
if (L->data[i] > L->data[j]) { // 前面的要取部分字符串的序号:");
index = scanner.nextInt() - 1;
scanner.nextLine();
if (index元素比后面的元素大,交换位置
int tmp = L->data[i];
L->data[i] < 0 || index >= size()) {
System.out.println("序号无效!");
} else {
System.out.println(" = L->data[j];
L->data[j] = tmp;
}
}
}
}
// 查找指定元素请输入开始位置:");
int start = scanner.nextInt();
scanner.nextLine();
System.out.println("请输入结束位置:");
int在线性表中的位置
int LocateElem(SqList *L, int elem) {
for (int i = 0 end = scanner.nextInt();
scanner.nextLine();
if (start < 0 || end < start || end > get(index).length()); i < L->length; i++) {
if (L->data[i] == elem) {
return i+1; // {
System.out.println("无效的位置!");
} else {
System.out.println(get(index).substring(start, end));
返回位置,位置从1开始计数
}
}
return -1; // 没有找到,返回-1
}
}
break;
case 6:
System.out.println("请输入要比较的两个字符串的序号:}
int main() {
SqList LA, LB;
InitList(&LA);
InitList(&LB);
// 生成LA");
int index1 = scanner.nextInt() - 1;
scanner.nextLine();
int index2 = scanner.nextInt() - 1、LB
ListInsert(&LA, 52);
ListInsert(&LA, 18);
ListInsert(&LA, 2;
scanner.nextLine();
if (index1 < 0 || index1 >= size() || index2 < 0 || index2);
ListInsert(&LA, 3);
ListInsert(&LA, 5);
ListInsert(&LA, 9);
>= size()) {
System.out.println("序号无效!");
} else {
if (get(index1).equals(get(index ListInsert(&LA, 15);
ListInsert(&LA, 60);
ListInsert(&LB, 14);
ListInsert2))) {
System.out.println("相等");
} else {
System.out.println("不相等");
}
}
(&LB, 12);
ListInsert(&LB, 3);
ListInsert(&LB, 25);
ListInsert(&LB break;
case 7:
System.out.println("请输入要去空格的字符串的序号:");
index = scanner.nextInt() - 1;
scanner.nextLine();
if (index < 0 || index >= size()) {
System.out.println, 59);
ListInsert(&LB, 15);
// 操作2:将LB中存在而LA中不存在的元素("序号无效!");
} else {
System.out.println(get(index).trim());
}
break;
case 8:
System.out.println("请输入要判断是否为空值的字符串的序号:");
index = scanner.nextInt() - 1插入到LA中
for (int i = 0; i < LB.length; i++) {
int elem = LB.data[i];
if (LocateElem(&LA, elem) == -1) { // LA中不存在该元素
ListInsert;
scanner.nextLine();
if (index < 0 || index >= size()) {
System.out.println("序号无效!");
(&LA, elem); // 插入到LA的末尾
}
}
// 操作3:删除大于50的元 } else {
if (get(index).isEmpty()) {
System.out.println("是空值");
} else {
System素
for (int i = 0; i < LA.length; i++) {
if (LA.data[i] > 50.out.println("不是空值");
}
}
break;
case 9:
System.out.println("请输入要转) {
ListDelete(&LA, i+1); // 删除该元素
i--; // 由于元素前移换大小写的字符串的序号:");
index = scanner.nextInt() - 1;
scanner.nextLine();
if (index,i需要减1
}
}
// 操作4:对LA进行升序排列
AscendingSort(&LA < 0 || index >= size()) {
System.out.println("序号无效!");
} else {
System.out.println(");
// 操作5:查找25、3、60在LA中的位置
printf("The position of 25 in LA请选择大小写转换方式:");
System.out.println("1. 转换为大写");
System.out.println("2. is %d\n", LocateElem(&LA, 25));
printf("The position of 3 in LA is %d\n", Locate 转换为小写");
int choice2 = scanner.nextInt();
scanner.nextLine();
if (choice2 == 1) {
Elem(&LA, 3));
printf("The position of 60 in LA is %d\n", LocateElem(&LA, 60 System.out.println(get(index).toUpperCase());
} else if (choice2 == 2) {
System.out.println(get(index).));
return 0;
}
```
阅读全文