顺序表的插入和删除:
#include<stdio.h>
/*这是一个宏,就是一种替换,代码后面出现 MAXSIZE 的地方,都将是10,
假若你的代码中出现了很多这样的10(不是MAXSIZE),可是你要修改,不是很麻烦吗,但是有了这个宏,你只需要修改这个宏就OK了
*/
#define Maxsize 10
//定义顺序表结构体
typedef struct sqlist
{
int data[Maxsize];
int length = 0;
};
//声明插入函数
sqlist ListInsert_Sq(sqlist& L, int i, int e)
{
if (i<1 || i>L.length) {
return L;
}
for (int j = L.length - 1;j >= i - 1;j--) {
L.data[j + 1] = L.data[j];
}
L.data[i - 1] = e;
L.length++;
return L;
}
//声明删除函数
sqlist ListDelete_Sq(sqlist& L, int m)
{
if (m<1 || m>L.length) {
return L;
}
for (int q = L.length - 1;q >= m;q--) {
L.data[q - 1] = L.data[q];
}
L.length--;
return L;
}
//主函数
int main()
{
sqlist L;
int a, b, c;
for (int i = 0;i < 7;i++) {
L.data[i] = i;
L.length++;
}
printf("尚未插入:\n");
for (int i = 0;i < 7;i++) {
printf("%d ", L.data[i]);
}
printf("\n");
scanf_s("%d %d", &a, &b);
ListInsert_Sq(L, a, b);
printf("插入后:\n");
for (int i = 0;i < L.length;i++) {
printf("%d ", L.data[i]);
}
printf("\n");
scanf_s("%d", &c);
ListDelete_Sq(L, c);
printf("删除后:\n");
for (int i = 0;i < L.length;i++) {
printf("%d ", L.data[i]);
}
return 0;
}
顺序表的合并:
#include<stdio.h>
#define Maxsize 100
//定义顺序表结构体
typedef struct sqlist
{
int data[Maxsize];
int length = 0;
};
//定义合并函数
void merge(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];
k++;i++;lc.length++;
}
else {
lc.data[k] = lb.data[j];
k++;j++;lc.length++;
}
}
while (j >= lb.length && i < la.length) {
lc.data[k++] = la.data[i++];lc.length++;
}
while (i >= la.length && j <= lb.length) {
lc.data[k++] = lb.data[j++];lc.length++;
}
lc.length--;
printf("%d\n", lc.length);
}
//主函数
int main()
{
sqlist la, lb, lc;
int k = 0;
for (int i = 0;i < 13;i++) {
la.data[i] = i;
la.length++;
}
for (int j = 2;j < 10;j++) {
lb.data[k++] = j;
lb.length++;
}
for (int i = 0;i < la.length;i++) {
printf("%d ", la.data[i]);
}
printf("\n");
for (int i = 0;i < lb.length;i++) {
printf("%d ", lb.data[i]);
}
printf("\n");
merge(la, lb, lc);
for (int l = 0;l < lc.length;l++) {
printf("%d ", lc.data[l]);
}
return 0;
}