1.设计一个测试应用程序完成如下功能:
⑴建立顺序表L;依次插入数据元素13,5,27,9,32,123,76,98,54,87;直至数据元素为32767为止
(2)输出顺序表L;
(3)输出顺序L的第3个数据元素;
(4)输出数据元素76的位置;
(5)在第4个位置上插入数据元素56;输出插入数据后的顺序表
(6)删除顺序表L的第7个元素;输出删除数据后的顺序表
函数命名要求:
1)建立顺序表initsq()
2)输出线性表printsq(sqlist L)
3)按序号查找locatesq1(sqlist L,int i)
4)按元素值查找locatesq2(sqlist L,int e)
5)插入数据元素insertsq(sqlist L,int I,int e)
6)删除数据元素deletesq(sqlist L,int i)
代码:
#include <stdio.h>
#define list_size 100
typedef struct{
int elem[list_size];
int length;
} sqlist;
sqlist L;
/*本题所建立函数*/
sqlist initsq();
int printsq(sqlist L);
int locatesq1(sqlist L,int i);
int locatesq2(sqlist L,int e);
sqlist insertsq(sqlist L,int i,int e);
sqlist deletesq(sqlist L,int i);
int main(void)
{
printf("(1)\n请输入顺序表初始元素,以32767结束:\n");
L = initsq();
printf("\n(2)\n");
printf("顺序表成功建立为:\n");
printsq(L);
printf("\n(3)\n");
printf("顺序表的第三个数据元素为:\n");
printf("%d\n",locatesq1(L,3));
printf("\n(4)\n");
printf("顺序表元素76的位置为:\n");
printf("第%d个\n",locatesq2(L,76));
printf("\n(5)\n");
printf("在第4个位置上插入数据元素56:\n");
L=insertsq(L,4,56);
printsq(L);
printf("\n(6)\n");
printf("删除顺序表L的第7个元素:\n");
L=deletesq(L,7);
printsq(L);
return 0;
}
/* 定义线性表构造函数 */
sqlist initsq()
{
int e,i=0;
L.length = 0;
while (1){
scanf("%d",&e);
if(e == 32767) break;
L.elem[i++] = e;
L.length++;
}
return L;
}
/* 定义线性表输出函数 */
int printsq(sqlist L){
int i;
if (L.length < 1)
{
return -1;
}
for (i = 0;i < L.length; i++){
printf("%d ",L.elem[i]);
}
printf("\n");
}
/* 定义按序号查找函数 */
int locatesq1(sqlist L,int i){
if (i<1 || i>L.length){
return -1;
}
return L.elem[i-1];
}
/* 定义按数值查找函数 */
int locatesq2(sqlist L,int e){
int i;
for (i = 0 ; i<L.length ; i++){
if (L.elem[i] == e){
return i+1;
}
}
return -1;
}
/* 定义插值函数 */
sqlist insertsq(sqlist L,int i,int e){
int j;
if (i < 1 || i > L.length+1){
return L;
}
for (j = L.length ; j>= i ; j--){
L.elem[j] = L.elem[j-1];
}
L.elem[i-1] = e;
L.length++;
return L;
}
/* 定义删除函数 */
sqlist deletesq(sqlist L,int i){
if (i<1 || i>L.length){
return L;
}
for (i ; i<L.length ; i++){
L.elem[i-1] = L.elem[i];
}
L.length--;
return L;
}
运行结果:
(个人答案,如有错误或更正建议欢迎联系作者)