线性表

本篇文章是对线性表创建以及插入、删除元素等功能的编写。

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10 //容纳的元素个数
#define false 0
#define true 1
#define error 0
#define ok 1

1.定义表的结构

typedef struct
{
    /* data */
    int *elem;
    int listSize;
    int len;
}Sqlist;

2.进行初始化

int InitList(Sqlist *L){
    L->elem=(int *)malloc(MAXSIZE*sizeof(int));
    if(!L->elem){
        return error;
    }
    L->len=0;
    L->listSize=MAXSIZE;
    return ok;
}

3.插入元素

//i表示插入的位置,e表示元素
int ListInsert(Sqlist *L,int i,int e){
    if(i<1 || i>MAXSIZE || L->len==MAXSIZE){
        return false;
    }
    for(int j=L->len;j>=i;j--){
        L->elem[j]=L->elem[j-1];
    }
    L->elem[i-1]=e;
    L->len++;
    return ok;
}

4.删除元素

//i表示删除元素的位置,e表示删除的元素
int ListDelete(Sqlist *L,int i,int *e){
    if(i<1 || i>MAXSIZE || L->len==0){
        return error;
    }
    *e=L->elem[i-1];
    for(int j=i-1;j<(L->len-1);j++){
        L->elem[j]=L->elem[j+1];
    }
    L->len--;
    return ok;
}

5.遍历顺序表

void Bian(Sqlist L){
    for(int i=0;i<L.len;i++){
        printf("%d ",L.elem[i]);
    }
}

6.判断表是否为空

int ListEmpty(Sqlist L){
    if(L.len==0){
        return true;
    }
    else{
        return false;
    }
}

7.清除顺序表

void ClearList(Sqlist *L){
    L->len=0;
}

8.获取元素位置

int LocateElem(Sqlist L,int e){
    int i;
    for(i=0;i<L.len;i++){
        if(L.elem[i]==e){
            return i+1;
        }
    }
    return 0;
}

9.表的长度

int ListLength(Sqlist L){
    return L.len;
}

10.销毁表

int DestoryList(Sqlist *L){
    free(L->elem);
    L->elem=NULL;
    L->len=0;
    L->listSize=0;
    return 1;
}

11.获取元素

//i为位置,e为元素
int GetElem(Sqlist L,int i,int *e){
    if(i<1 || i>L.len){
        return error;
    }
    *e=L.elem[i-1];
    return ok;
}

12.主函数

int main(){
    Sqlist L;
    InitList(&L);
    ListInsert(&L,1,1);
    ListInsert(&L,2,2);
    ListInsert(&L,2,3);
    Bian(L);
    int k=DestoryList(&L);
    if(k==1){
        printf("表已销毁!");
    }
    else{
        printf("表未销毁!");
    }
    return 0;
}

13.运行截图

1 3 2 表已销毁!
[Done] exited with code=0 in 0.962 seconds

主函数可以根据自己的需求进行添加相应的功能,我已经将他们进行了测试,没得问题,所以就不列举啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值