顺序表

概念

使用顺序结构存储的线性表

实现

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

#define SIZE 100

typedef int ElementType;
//数组结构
typedef struct array
{
    ElementType * data;
    int current_len;
    int size;
}Array;

//数组结构指针
typedef Array * SeqList;

//初始化
void Initialize(SeqList L)
{
    L->data = (ElementType *)malloc(sizeof(ElementType)*SIZE);
    if (L->data == NULL)
    {
        printf("Memory allocation failed\n");
        exit(1);
    }

    L->current_len = 0;
    L->size = SIZE;

}
//判断顺序表是否为空
bool IsEmpty(SeqList L)
{
    if (L->current_len == 0)
        return true;
    else
        return false;

}
//判断顺序表是否为满
bool IsFull(SeqList L)
{
    if (L->size == L->current_len)
        return true;
    else
        return false;
}
//插入数据
bool Insert(SeqList L,ElementType item,int i)
{
    int j;
    if (IsFull(L))
    {
        puts("List is Full.");
        return false;
    }

    if (i<1 || i>L->current_len+1)
    {
        puts("Insert position Unreasonable.");
        return false;
    }

    for (j = L->current_len - 1;j >= i-1; j--)
    {
        L->data[j+1] = L->data[j];
    }
    L->data[i-1] = item;
    L->current_len++;
    return true;
}
//删除数据
bool Delete(SeqList L, int i)
{
    if (IsEmpty(L))
    {
        puts("List is Empty.");
        return false;
    }

    if (i<1 || i > L->current_len + 1)
    {
        puts("Delete position is wrong.");
        return false;
    }

    int j;
    for(j = i;j <= L->current_len - 1;j++)
        L->data[j-1] = L->data[j];
    L->current_len--;
    return true;

}
//显示顺序表数据
void Traverse(SeqList L)
{
    int i;
    puts("The Array element is:");
    for (i = 0; i < L->current_len; i++)
        printf("%d ",L->data[i]);

    printf("\n");

}
//测试
int main(void)
{
    Array arr;
    Initialize(&arr);
    int i;
    ElementType item;
    puts("Enter five elem:");
    for(i = 1;i <=5;i++)
    {
        scanf("%d",&item);
        Insert(&arr,item,i);
    }
    Traverse(&arr);

    Delete(&arr,3);

    Traverse(&arr);

    return 0;


}

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第三章 线性表之顺序表 第三章 线性表之顺序表一、什么是线性表?1> 概念2> 线性表的基本操作二、线性表的顺序存...
    白老师课堂阅读 2,311评论 1赞 6
  • 网易云课堂小甲鱼课程链接:数据结构与算法 线性表 1.定义 (List):由零个或多个数据元素组成的有限序列。 2...
    NotFunGuy阅读 2,643评论 0赞 3
  • 参考:线性表和链表的区别 注:参考文中的‘线性表’准确的说应该是’顺序表‘,链表与顺序表都是线性表。 顺序表:顺序...
    iOS_肖晨阅读 2,781评论 0赞 51
  • 《小鱼散步》,一个孩子的自娱自乐,小鱼的想象力在简单的散步过程中飞扬。 在这个故事中,我邂逅了我的童年,...
    鹏力阅读 562评论 2赞 3
  • 第四十四章 踏青觅春 在老家的乡间小路 久违的油菜花 有一株早熟,二月底就悉数开放 是欢迎远道归来的游子么 热情得...
    碧海青天2017阅读 263评论 3赞 1

友情链接更多精彩内容