(更新版)安徽某高校《数据结构》作业5

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;
}

运行结果:

(个人答案,如有错误或更正建议欢迎联系作者)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值