数据结构 ----- 顺序表 (C语言)

数据结构 ----- 顺序表 (C语言),第1张

文章目录
  • 1、静态分配
  • 2、栈空间初始化
  • 3、顺序表插入
  • 4、顺序表删除
  • 5、输出顺序表
  • 6、按值查找


1、静态分配
//宏定义
#define MaxSize 50 //表的最大长度

typedef int ElemType;//定义Elemtype为int类型

typedef struct
{
    ElemType date[MaxSize];
    int length; // length为表长度
} SeqList;
2、栈空间初始化
void InitSeqList(SeqList *Lq)
{
    Lq->length = -1; //初始化表为空表
}
3、顺序表插入

代码如下(示例):

//int i为元素的位置 ElemType x为插入的新元素
void InsList(SeqList *Lq, int i, ElemType x)
{
    //当表长等于最大值时为满
    if (Lq->length == MaxSize - 1)
    {
        printf("已满");
    }
    //当插入的位置小于1或大于Lq->length + 2时插入不了
    if (i < 1 || i > Lq->length + 2)
    {
        printf("出错");
    }
    //向后移动元素
    for (int j = Lq->length; j >= i - 1; j--)
    {
        Lq->date[j + 1] = Lq->date[j];
    }
    Lq->date[i - 1] = x; //新元素插入
    Lq->length++; //length指向最后的元素
})
4、顺序表删除
void DeleteList(SeqList *Lq, int i)
{
    // ||用法:一个为真即为真
    if (i < 1 || i > Lq->length + 1)
    {
        printf("不存在");
    }
    //向前移动元素
    for (int j = i; j <= Lq->length; j++)
    {
        Lq->date[j - 1] = Lq->date[j];
    }
    Lq->length--;//length指向最后的元素
}
5、输出顺序表
void show(SeqList *Lq)
{
    for (int i = 0; i <= Lq->length; i++)
    {
        printf("%d", Lq->date[i]);
        printf("\t");
    }
    printf("\n");
}
6、按值查找
void LtSeqList(SeqList *Lq, ElemType x)
{
    int i = 0;
    //&&用法:两个真为真
    while (i <= Lq->length && Lq->date[i] != x)
    {
        i++;
    }
    if (i > Lq->length)
    {
        printf("\n没有找到");
    }
    else
    {
        printf("\n找到了,在第%d的位置", i + 1);
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/562677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存