线性表的顺序存储

该代码定义了一个结构体用于管理整型数组,并实现了插入元素、查找元素和删除指定位置元素的功能。程序通过用户输入选择操作,然后执行相应的功能,如在指定位置插入元素,查找元素或删除元素。
摘要由CSDN通过智能技术生成
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
#define elemtype int 
#define MaxSize 100
typedef struct MyStruct
{
    elemtype elem[MaxSize];
    int last;//数组最大下标
}Link;

bool Inser(Link* L, int k, int e);//在k的前面插入
bool Find(Link* L, int e);
bool Delet(Link* L, int k, int* e);
int main() {
    int n;
    int k,e;
    Link* L = (Link*)malloc(sizeof(Link));
    L->last = 0;
    while (1) {
        printf("请输入操作:1.插入 2.查找。3.删除\n");
        scanf("%d", &n);
        if (n == 1) {
            printf("插入位置和数据");
            scanf("%d%d", &k, &e);
            if (Inser(L, k, e))     printf("插入成功\n");
            else printf("插入失败\n");
        }
        else if (n == 2) {
            printf("请输入查找的数据");
            scanf("%d", &e);
            if (Find(L, e))         printf("查找成功\n");
            else   printf("查找失败\n");
        }
        else {
            printf("请输入删除的位置");
            scanf("%d", &k);
            if (Delet(L, k, &e)) printf("删除成功,数据是%d\n", e);
            else printf("删除失败\n");
        }
    }
}
bool Inser(Link* L, int k, int e) {
    if (k<1 || k>L->last + 2) {
        printf("插入不合理\n");
        return false;
    }
    else {
        for (int i = L->last;i >= k - 1;i--) {
            L->elem[i + 1] = L->elem[i];
        }
        L->elem[k - 1] = e;
        L->last++;
        return true;
    }
}
bool Find(Link* L, int e) {
    for (int i = 0;i <= L->last;i++) {
        if (L->elem[i] == e) {
            printf("位置%d", i + 1);
            return true;
        }
    }
    return false;
}
bool Delet(Link* L, int k, int* e) {
    if (k<1 || k>L->last + 1) {
        printf("删除位置不合理\n");
        return false;
    }
    else {
        *e = L->elem[k - 1];
        for (int i = L->last;i >= k ;i--) {
            L->elem[i - 1] = L->elem[i];
        }
        L->last--;
        return true;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值