顺序表初始化
本文分享如何创建一个顺序表,并进行初始化,前插,后插,显示的操作。
顺序表是一组地址连续的存储单位。
#include "stdio.h"
#include "malloc.h"
#define SEQLIST_INIT_SIZE 10 //存储元素个数
typedef int ElemType; //存放数据为整形
typedef struct SeqList //动态分配一维数组
{
ElemType *base; //线性表的基地址
int capacity; //容量
int size; //表示当前线性表的大小
}SeqList;
//初始化线性表
void InitSeqList(SeqList *list)
{
list->base = (ElemType *)malloc(sizeof(ElemType)*SEQLIST_INIT_SIZE); //构造一个空表
list->capacity = SEQLIST_INIT_SIZE;
list->size = 0; //当前线性表为0
}
//后插入元素
void push_back(SeqList *List, ElemType x)
{
if (List->size>=List->capacity)
{
printf("顺序表空间已满,不能插入数据\n");
return;
}
List->base[List->size] = x; //先放元素后动指针
List->size++;
}
//前插元素
void push_front(SeqList *List, ElemType x)
{
if (List->size>=List->capacity)
{
printf("顺序表空间已满,不能插入数据\n");
return;
}
for (int i = List->size; i>=0;i--) //将前一个元素赋给后一个元素
{
List->base[i] = List->base[i-1];
}
List->base[0] = x; //将元素插入第一个位置
List->size++; //多添加一个元素size向后移动一个
}
//显示插入元素
void show_list(SeqList*List )
{
for (int i = 0; i <List->size;i++)
{
printf("%d ", List->base[i]); //从第一个元素开始显示
}
printf("\n");
}
int main()
{
SeqList mylist; //定义一个顺序表
InitSeqList(&mylist); //初始化
push_back(&mylist, 1); //插入数据
push_back(&mylist, 2);
push_back(&mylist, 3);
push_front(&mylist, 5);
push_back(&mylist, 4);
push_front(&mylist, 6);
show_list(&mylist); //显示数据
}
运行结果
6 5 1 2 3 4