1、建立一个顺序表,输入n个元素并输出; 2、查找线性表中的最大元素并输出; 3、在线性表的第i个元素前插入一个正整数x; 4、删除线性表中的第j个元素; 5、将线性表中的元素按升序排列; 6、将线性表中的元素就地逆序(只允许用一个暂存单元); 用C++代码实现
时间: 2023-04-01 11:01:05 浏览: 70
1、建立一个顺序表,输入n个元素并输出:
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = ;
}
void CreateList(SqList *L, int n) {
int i;
for (i = ; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
void PrintList(SqList L) {
int i;
for (i = ; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
int n;
scanf("%d", &n);
InitList(&L);
CreateList(&L, n);
PrintList(L);
return ;
}
2、查找线性表中的最大元素并输出:
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = ;
}
void CreateList(SqList *L, int n) {
int i;
for (i = ; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
int Max(SqList L) {
int i, max = L.data[];
for (i = 1; i < L.length; i++) {
if (L.data[i] > max) {
max = L.data[i];
}
}
return max;
}
int main() {
SqList L;
int n, max;
scanf("%d", &n);
InitList(&L);
CreateList(&L, n);
max = Max(L);
printf("%d\n", max);
return ;
}
3、在线性表的第i个元素前插入一个正整数x:
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = ;
}
void CreateList(SqList *L, int n) {
int i;
for (i = ; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
void Insert(SqList *L, int i, int x) {
int j;
if (i < 1 || i > L->length + 1) {
printf("插入位置错误\n");
return;
}
if (L->length >= MAXSIZE) {
printf("顺序表已满,无法插入\n");
return;
}
for (j = L->length; j >= i; j--) {
L->data[j] = L->data[j - 1];
}
L->data[i - 1] = x;
L->length++;
}
void PrintList(SqList L) {
int i;
for (i = ; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
int n, i, x;
scanf("%d", &n);
InitList(&L);
CreateList(&L, n);
scanf("%d%d", &i, &x);
Insert(&L, i, x);
PrintList(L);
return ;
}
4、删除线性表中的第j个元素:
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = ;
}
void CreateList(SqList *L, int n) {
int i;
for (i = ; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
void Delete(SqList *L, int j) {
int i;
if (j < 1 || j > L->length) {
printf("删除位置错误\n");
return;
}
for (i = j; i < L->length; i++) {
L->data[i - 1] = L->data[i];
}
L->length--;
}
void PrintList(SqList L) {
int i;
for (i = ; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
int n, j;
scanf("%d", &n);
InitList(&L);
CreateList(&L, n);
scanf("%d", &j);
Delete(&L, j);
PrintList(L);
return ;
}
5、将线性表中的元素按升序排列:
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = ;
}
void CreateList(SqList *L, int n) {
int i;
for (i = ; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
void Sort(SqList *L) {
int i, j, temp;
for (i = ; i < L->length - 1; i++) {
for (j = i + 1; j < L->length; j++) {
if (L->data[i] > L->data[j]) {
temp = L->data[i];
L->data[i] = L->data[j];
L->data[j] = temp;
}
}
}
}
void PrintList(SqList L) {
int i;
for (i = ; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
int n;
scanf("%d", &n);
InitList(&L);
CreateList(&L, n);
Sort(&L);
PrintList(L);
return ;
}
6、将线性表中的元素就地逆序(只允许用一个暂存单元):
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
void InitList(SqList *L) {
L->length = ;
}
void CreateList(SqList *L, int n) {
int i;
for (i = ; i < n; i++) {
scanf("%d", &L->data[i]);
}
L->length = n;
}
void Reverse(SqList *L) {
int i, temp;
for (i = ; i < L->length / 2; i++) {
temp = L->data[i];
L->data[i] = L->data[L->length - i - 1];
L->data[L->length - i - 1] = temp;
}
}
void PrintList(SqList L) {
int i;
for (i = ; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
int main() {
SqList L;
int n;
scanf("%d", &n);
InitList(&L);
CreateList(&L, n);
Reverse(&L);
PrintList(L);
return ;
}