陈大剩博客

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

  • 陈大剩
  • 2021-02-06 22:01:43
  • 1560

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

#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文件):

#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文件

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

输入

请输入整数 
1
请输入整数 
2
请输入整数 
3
请输入整数 
4
请输入整数 
5

请输入整数 
6

输出

1 
2 
3 
6 
4 
5 


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

Process finished with exit code 0

分享到:
0

说点儿什么吧

头像

表情

本站由陈大剩博客程序搭建 | 湘ICP备17009938号| Copyright © 2017 - 陈大剩博客 | 本站采用创作共用版权:CC BY-NC 4.0

站长统计| 文章总数[31]| 评论总数[12]| 登录用户[21]| 时间点[33]

登入

社交账号登录