纯c语言实现顺序表的增删改查基本操作(包括初始化和赋值)

这篇博客采用纯c语言完成数据结构顺序表的
增删改查几个基本操作

当作是自己每一次学习后的小总结
下面po代码!!

(每个注释都很详细,应该可以理解鸭)

#include<stdio.h>
#include<stdlib.h>
#define LISTSIZE 20
typedef struct 
{
    int* elem;
    int length;
    int LiseSize;
}SqList;

//给顺序表赋值
void fuzhi(SqList* l)//  SqList* l这里说明一下,这里设定形式参数为指针,即一个地址
                     //下面调用函数的实参为&l也是一个地址(结构体l的地址),数据形式相同,这种写法叫做”参数传递指针“
                     //严蔚敏版本教材是类c语言不是纯c,所以她写的SqList &l是c++的引用&符号,在c编译器里无法通过
{
    int length;
    printf("请给顺序表赋值:\n");
    printf("你要输入几个数据:\n");
    scanf("%d", &length);
    printf("请依此输入这几个元素:\n");
    for(int i=0;i<length;i++)
        scanf("%d", &l->elem[i]);
        l->length = length;
}

//插入数据函数
void InsertList(SqList* l,int i,int elem)
{
    for(int j=l->length;j>=i;j--)
    {
        l->elem[j+1] = l->elem[j];
    }
    l->length++;
    l->elem[i] = elem;
} 

//删除顺序表元素
void DeleteList(SqList* l,int i)
{
    for(int j=i;j<=l->length;j++)
        l->elem[j] = l->elem[j+1];
    l->length--;
}

//修改元素的值
void AlterElement (SqList*l,int i,int elem)
{
    l->elem[i-1] = elem;
}

//查找数据
int SearchElement(SqList* l, int elem)
{
    int location;
    for(int i=0;i<l->length;i++)
        if(l->elem[i] == elem)
        {
            location = i+1;
            return location;//有的话就返回loccation的数值,若已经return了就等于break立刻结束函数调用,不会再执行return -1了!!
        }
    return -1; //没有找到元素就返回值-1
}

//打印顺序表
void PrintList (SqList* l)
{
    printf("操作后的线性表为:\n");
    for(int i=0;i<l->length;i++)//坑!!这里i<length记得要加上l.才能让遍历相应增加
        printf("%d ",l->elem[i]);
}

//主函数
int main()
{
    SqList l;
    
    l.elem = (int*)malloc(LISTSIZE*sizeof(int));//如果没有这句话为线性表分配空间,则scanf永远只能输入一个数就结束
    l.LiseSize = LISTSIZE;
    fuzhi(&l);
    PrintList(&l);
    //插入数据函数
    printf("\n输入你要插入的位置和插入的数据值:\n");
    int insert_a,insert_b;
    scanf("%d%d",&insert_a,&insert_b);
    InsertList(&l,insert_a-1,insert_b);
    PrintList(&l);
    //删除元素
    int delete;
    printf("\n输入你要删除的数据位置:\n");
    scanf("%d",&delete);
    DeleteList(&l,delete-1);
    PrintList(&l);
    //修改元素
    int Alter_a,Alter_b;
    printf("\n输入你要修改的数据位置和修改的数值:\n");
    scanf("%d%d", &Alter_a,&Alter_b);
    AlterElement(&l,Alter_a,Alter_b);
    PrintList(&l);
    //查找数据
    int search;
    printf("请输入你要查找的数据的值:\n");
    scanf("%d",&search);
    int index = SearchElement(&l,search);
    if (index + 1) 
        printf("您要找的数据的位置为第%d个\n", index);
    else 
        printf("抱歉,您要查找的数据不存在哦\n");
}


  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值