怎么设计顺序表
设计一个顺序表,实现以下操作1,将元素x插入表中并保持有序;
2,查找值为x的元素,若找到则将其删除;
3,输出表中所有元素。
要求:对上述每个操作设计一个子函数,并设计一个主函数调用各子函数,以验证所设计的有序顺序表的正确性。 {:10_266:}{:10_266:}{:10_266:}没人吗
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#define MAXSIZE 65535
void insert(int *, int, int);
bool search(int *, int, int);
void printlist(int *, int);
int main()
{
int sqlist = {1, 2, 3, 5, 8, 12, 16, 18, 22, 25, 29, 77, 89, 92};
int len = 14, ins;
printf("输入要插入的数字(输入ctrl + Z退出):");
while(~scanf("%d", &ins))
{
insert(sqlist, ins, len);
len++;
printf("输入要删除的数字:");
scanf("%d", &ins);
bool delete_success = search(sqlist, ins, len);
printf(delete_success ? "Delete Success!\n" : "Delete Failed!\n");
len = delete_success ? len - 1 : len;
printf("输出结果如下:\n");
printlist(sqlist, len);
printf("输入要插入的数字(输入ctrl + Z退出):");
}
return 0;
}
void insert(int sq[], int x, int n)
{
int loc = n;
for(int i = 0; i < n; i++)
{
if(sq > x)
{
loc = i;
break;
}
}
for(int i = n - 1; i >= loc; i--)
sq = sq;
sq = x;
}
bool search(int sq[], int x, int n)
{
for(int i = 0; i < n; i++)
if(sq == x)
{
for(int j = i; j < n; j++)
sq = sq;
return true;
}
return false;
}
void printlist(int sq[], int n)
{
for(int i = 0; i < n; i++)
printf(i ? " %d" : "%d", sq);
putchar(10);
}
页:
[1]