前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线性表顺便表示增删改查(静态数组版)

线性表顺便表示增删改查(静态数组版)

作者头像
陈大剩博客
发布2023-03-06 09:04:00
2170
发布2023-03-06 09:04:00
举报
文章被收录于专栏:陈大剩博客专栏

线性表定义(my.h文件):

代码语言:javascript
复制
#ifndef _MY_H
#define _MY_H
#define MaxSize 10

#include <stdio.h>
#include <stdbool.h>


typedef struct {
    int data[MaxSize];
    int length;
} SqList;

int getInput();

void InitList(SqList *L);

_Bool ListInsert(SqList *L, int add);

_Bool ListDelete(SqList *L, int add);

_Bool GetElem(SqList *L, int add);

_Bool LocateElem(SqList *L, int e);

void PrintList(SqList L);

#endif

线性表操作方法(my.c文件):

代码语言:javascript
复制
#include "my.h"

/**
 * 输入函数
 * @return
 */
int getInput() {
    printf("请输入整数 \n");
    int temp;
    scanf("%d", &temp);
    return temp;
};

/**
 * 初始化链表
 * @param L
 */
void InitList(SqList *L) {
    int i;
    (*L).length = 0;
    for (i = 0; i < 5; ++i) {
        (*L).data[i] = getInput();
        (*L).length++;
    }
}

/**
 * 按位插入
 * @param L
 * @param add
 * @return
 */
_Bool ListInsert(SqList *L, int add) {
    int i;
    if (add > (*L).length || add > MaxSize) {
        printf("插入位置不合法 \n");
        return false;
    }
    for (i = (*L).length; i >= add; --i) {
        (*L).data[i] = (*L).data[i - 1];
    }
    (*L).data[add - 1] = getInput();
    (*L).length++;
    return true;
}

/**
 * 按位删除
 * @param L
 * @param add
 * @return
 */
_Bool ListDelete(SqList *L, int add) {
    int i;
    if (add > (*L).length || add > MaxSize) {
        printf("删除位置不合法 \n");
        return false;
    }
    for (i = add; i < (*L).length; ++i) {
        (*L).data[i - 1] = (*L).data[i];
    }
    (*L).data[i] = 0;
    (*L).length--;
    return true;
}

/**
 * 按位查找
 * @param L
 * @param add
 * @return
 */
_Bool GetElem(SqList *L, int add) {
    int i;
    if (add > (*L).length || add > MaxSize) {
        printf("查找位置不合法 \n");
        return false;
    }
    printf("查找位置%d的元素为:%d\n", add, (*L).data[add - 1]);
    return true;
}

/**
 * 按值查找
 * @param L
 * @param e
 * @return
 */
_Bool LocateElem(SqList *L, int e) {
    int i;
    for (i = 0; i < (*L).length; ++i) {
        if ((*L).data[i] == e) {
            printf("元素为%d的位置为:%d \n", e, i + 1);
            return true;
        }
    }
    printf("无此元素~\n");
    return false;
}

/**
 * 打印输出
 * @param L
 */
void PrintList(SqList L) {
    int i;
    for (i = 0; i < L.length; ++i) {
        printf("%d \n", L.data[i]);
    }
}

main.c文件

代码语言:javascript
复制
#include <stdio.h>
#include "my.h"

int main() {
    SqList l;
    InitList(&l);
    putchar('\n');
    ListInsert(&l, 4);
    putchar('\n');
    PrintList(l);
    putchar('\n');
    ListDelete(&l, 5);
    putchar('\n');
    PrintList(l);
    LocateElem(&l, 3);
    GetElem(&l, 5);
    return 0;
}

输入

代码语言:javascript
复制
请输入整数 
1
请输入整数 
2
请输入整数 
3
请输入整数 
4
请输入整数 
5

请输入整数 
6

输出

代码语言:javascript
复制
1 
2 
3 
6 
4 
5 


1 
2 
3 
6 
5 
元素为3的位置为:3 
查找位置5的元素为:5

Process finished with exit code 0
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-02-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 线性表定义(my.h文件):
  • 线性表操作方法(my.c文件):
  • main.c文件
    • 输入
      • 输出
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档