C语言实现顺序表增删改查

C语言实现顺序表增删改查

main.c

#include "test.h"

void test();

ElementType dataArray[] = {
    {1,"侠客行"},
    {2,"将进酒"},
    {3,"神来之笔"},
    {4,"青莲剑歌"}
};


int main()
{
    test();
    return 0;
}


void test(){
    SeqList  seqList;
    InitList(&seqList,dataArray,4);
    PrintList(&seqList);
    DeleteElement(&seqList,3);
    printf("删除index = 3,后...\n");
    PrintList(&seqList);
}


test.c

#include "test.h"

void InitList(SeqList * seqList,ElementType * elemArray,int length){
    if (length > MAX_SIZE){
        printf("超出数组最大容量。");
    }
    seqList->length = 0;
    for (int i=0;i<length;i++){
        InserElement(seqList,i,elemArray[i]);
    }
}

void InserElement(SeqList * seqList,int index,ElementType element){
    if (seqList->length + 1 >= MAX_SIZE){
        printf("数组已满。");
        return;
    }
    if (index < 0 || index > MAX_SIZE-1){
        printf("输入下标不合法。");
        return;
    }
    if (index > seqList->length){
        printf("输入下标超过数组长度。");
        return;
    }
    for (int i=seqList->length-1;i>=index;i--){
        seqList->data[i+1] = seqList->data[i];
    }
    seqList->data[index] = element;
    seqList->length++;
}

void PrintList(SeqList * seqList){
    for (int i=0;i<seqList->length;i++){
        printf("%d\t%s.\n",seqList->data[i].id,seqList->data[i].name);
    }
}


void DeleteElement(SeqList * seqList,int index){
    if (index > MAX_SIZE-1 || index<0){
        printf("输入下标不合法.\n");
        return;
    }
    if (seqList->length == 0){
        printf("数组长度为0.不能删除.\n");
        return;
    }
    if (index > seqList->length){
        printf("输入下标超出数组长度.\n");
        return;
    }
    for (int i= index;i <= seqList->length-2 ;i++){
        seqList->data[i] = seqList->data[i+1];
    }
    seqList->length--;
}


test.h

#ifndef TEST_H_INCLUDED
#define TEST_H_INCLUDED

#include <stdio.h>
#include <stdlib.h>

#define MAX_SIZE 10

typedef struct {
    int id;
    char * name;
}ElementType;

typedef struct {
    ElementType data[MAX_SIZE];
    int length;
}SeqList;

void InitList(SeqList * seqList,ElementType * elemArray,int length);

void InserElement(SeqList * seqList,int index,ElementType element);

void PrintList(SeqList * seqList);

void DeleteElement(SeqList * seqList,int index);

#endif // TEST_H_INCLUDED


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值