顺序表

作者: lpworkstudy | 来源:发表于2017-09-17 09:44 被阅读0次

概念

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

实现

#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;


}

相关文章

  • 数据结构与算法(二,线性表的顺序存储结构,穷举法(冒泡和选择排序

    线性表 顺序表 顺序表的特性 顺序表的元素有前驱和后继 顺序表有size 顺序表的增删改查 顺序表的优缺点优点:尾...

  • 顺序表-动态顺序表

    顺序表是逻辑上相邻的元素物理也相邻的。 静态内存是指在程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时...

  • 顺序表-静态顺序表

    线性表,全名为线性存储结构。将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构(...

  • 线性表之顺序存储-顺序表

    顺序表的操作 [x] 向有序顺序表插入一个元素 [x] 顺序表的冒泡排序 [x] 顺序表的删除操作 [x] 顺序表...

  • 数据结构之线性表

    1、线性表-顺序表线性表-顺序表

  • 线性表-顺序表与单链表

    顺序表 线性表的顺序存储,是逻辑相邻,物理存储地址也相邻。 结构定义 顺序表的初始化 顺序表的插入 顺序表的取值 ...

  • 顺序表和链表的区别

    参考:线性表和链表的区别 注:参考文中的‘线性表’准确的说应该是’顺序表‘,链表与顺序表都是线性表。 顺序表:顺序...

  • 快速理解数据结构中链表

    组织数据作用的线性表分为顺序表和链表 顺序表:平常所使用的各类数组均为顺序表,即存储逻辑顺序和物理顺序相同。较常见...

  • 顺序表

    在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传...

  • 顺序表

    https://blog.csdn.net/qq_41943578/article/details/82934644

网友评论

      本文标题:顺序表

      本文链接:https://www.haomeiwen.com/subject/cwspsxtx.html