顺序表实现增删查改

seqlist.h文件:

#pragma once

#include<stddef.h>

#define SeqListMaxSize 1000
typedef int SeqType;

typedef struct SeqList {
    SeqType data[SeqListMaxSize];
    size_t size;
} SeqList;

void SeqListInit(SeqList* seq);//初始化

void SeqListPushBack(SeqList* seq, SeqType value);//尾插

void SeqListPopBack(SeqList* seq);//尾删

void SeqListPushFront(SeqList* seq, SeqType value);//头插

void SeqListPopFront(SeqList* seq);//头删

SeqType SeqListGet(SeqList* seq, size_t pos);//获取指定位置元素

void SeqlistModefy(SeqList* seq, size_t pos, SeqType value);//修改指定位置的值

size_t SeqlistFind(SeqList* seq, SeqType x);//查找指定元素的下标

void SeqListInsert(SeqList* seq, size_t pos,SeqType value);//向指定位置插入元素

void SeqListprintf(SeqList* seq);//打印

seqlist.c文件:

#include"seqlist.h"
#include<assert.h>
//1. 初始化
//2. 尾插
//3. 尾删
//4. 头插
//5. 头删
//6. 读任意位置元素
//7. 修改任意位置元素
//8. 查找指定元素值的下标
//9. 在任意位置插入元素
void SeqListInit(SeqList* seq)
{
    assert(seq);
    seq->size = 0;
    return;
}

void SeqListPushBack(SeqList* seq, SeqType value)
{
    assert(seq);
    if (seq->size >= SeqListMaxSize)
    {
        return;
    }
    seq->data[seq->size] = value;
    ++seq->size;
}

void SeqListPopBack(SeqList* seq)
{
    assert(seq);
    if (seq->size >= SeqListMaxSize)
    {
        return;
    }
    --seq->size;
}

void SeqListPushFront(SeqList* seq, SeqType value)
{
    assert(seq);
    if (seq->size >= SeqListMaxSize)
    {
        return;
    }
    size_t i = seq->size;
    for (; i >0; i--)
    {
        seq->data[i] = seq->data[i - 1];
    }
    seq->data[0] = value;
    ++seq->size;
}

void SeqListPopFront(SeqList* seq)
{
    assert(seq);
    if (seq->size >= SeqListMaxSize)
    {
        return;
    }
    size_t i = 0;
    for (; i < seq->size-1; i++)
    {
        seq->data[i] = seq->data[i + 1];
    }
    --seq->size;
}

SeqType SeqListGet(SeqList* seq, size_t pos)//获取指定位置元素
{
    assert(seq);
    assert(pos < seq->size);
    return seq->data[pos];
    printf(seq->data[pos]);
}

void SeqlistModefy(SeqList* seq, size_t pos, SeqType value)//修改指定位置的值
{
    assert(seq);
    assert(pos < seq->size);
    seq->data[pos] = value;
}

size_t SeqlistFind(SeqList* seq, SeqType x)//查找指定元素的下标
{
    assert(seq);
    size_t i = 0;
    for (; i < seq->size; i++)
    {
        if (seq->data[i] == x)
        {
            return i;
        }
        else
            return (size_t)-1;
    }
}

void SeqListInsert(SeqList* seq, size_t pos, SeqType value)//向指定位置插入元素
{
    assert(seq);
    if (seq->size >= SeqListMaxSize)
    {
        return;
    }
    size_t i = seq->size;
    while (i > pos)
    {
        seq->data[i] = seq->data[i - 1];
    }
    seq->data[pos] = value;
    ++seq->size;
}
void SeqListprintf(SeqList* seq)
{
    size_t i = 0;
    for (; i < seq->size; i++)
    {
        printf("%d ", seq->data[i]);
    }
}

测试代码:

#include"seqlist.h"
#include<stdio.h>
SeqList seq;
void SeqListInittest()
{
    SeqListInit(&seq);
}
void SeqListpushbacktest()
{
    SeqListPushBack(&seq, 1);
    SeqListPushBack(&seq, 2);
}
void SeqListpopback()
{
    SeqListPopBack(&seq);
}
void pushfronttest()
{
    SeqListPushFront(&seq, 2);
    SeqListPushFront(&seq, 3);
}
void seqListgettest()
{
    SeqType res = SeqListGet(&seq, 0);
    printf("%d ", res);
}
void seqlistmodefy()
{
    SeqlistModefy(&seq, 1, 4);
}
void seqlistfind()
{
    SeqType ret=SeqlistFind(&seq, 3);
    printf("%d ", ret);
}
void seqListinsert()
{
    SeqListInsert(&seq, 3, 5);
}
int main()
{
    //SeqListInittest();
    SeqListpushbacktest();
    //SeqListprintf(&seq);
    SeqListpopback();
    //SeqListprintf(&seq);
    pushfronttest();
    //SeqListprintf(&seq);
    //SeqListPopFront(&seq);
    //SeqListprintf(&seq);
    //seqListgettest();//3?结果  3
    seqlistmodefy();//3 4 1?结果 3 4 1
    //seqlistfind();//0? 0
    seqListinsert();//3 4 1 5? 结果3 4 1 5
    SeqListprintf(&seq);
    system("pause");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值