1.c++的顺序表的定义依靠于数组数组在内存中是连续的一片内存因此顺序表的数据都是前后相连的顺序表与链表的最大区别在于指针指针在内存中开辟一片连续的空间给到链表因此链表的内存中的数据有不连续性
顺序表的数据结构为
typedef struct Seqlist{
int data[Maxsize];
int length;
}Seqlist;
2.这个数据结构的数组规定了最大的容量以及现有的长度
最大容量一般都是由宏定义部分定义表的最大容量
而长度是通过初始化部分来给出
初始化部分
void Initlist(Seqlist* L)
{
L->length=0;
}
初始化可以初始化表长和表中的元素
通常初始化的时候一般都是初始化表长表中的元素都是通过插入操作来将所需要的东西给添加到表中
插入部分
bool InsertList(Seqlist* L,int i,int e)
{
if(i<1||i>L->length+1)
{
printf("插入位置不合法");
return false;
}if(L->length>Maxsize)
{
printf("表满了");
return false;
}
for(int j=i;j>i;j--)
{
L->data[j-1]=L->data[j];
}
L->data[i-1]=e;
L->length++;
return true;
}
插入部分需要将顺序表的实例化对象,插入位置,插入元素 这三个引入到插入操作中首先判断表长如果表长<1则是空表直接返回
如果是大于最大容量则是表长表满了
如果既不表满也不空表则可以进行插入操作插入则是将所有的元素都后移一位将插入的元素插入到顺序表中
最后将顺训表打印输出即可(和数组输出一样)
bool printSeqlist(Seqlist L)
{
if(L.length==0)
{
printf("空表");
}
if(L.length>=Maxsize)
{
printf("表满了");
}
for(int i=0;i<L.length;i++)
{
printf("%d\t");
}
}
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 10
#define bool char
#define true 1
#define false 0
typedef struct Seqlist{
int data[Maxsize];
int length;
}Seqlist;
void Initlist(Seqlist* L)
{
L->length=0;
}
bool InsertList(Seqlist* L,int i,int e)
{
if(i<1||i>L->length+1)
{
printf("插入位置不合法");
return false;
}if(L->length>Maxsize)
{
printf("表满了");
return false;
}
for(int j=i;j>i;j--)
{
L->data[j-1]=L->data[j];
}
L->data[i-1]=e;
L->length++;
return true;
}
bool printSeqlist(Seqlist L)
{
if(L.length==0)
{
printf("空表");
}
if(L.length>=Maxsize)
{
printf("表满了");
}
for(int i=0;i<L.length;i++)
{
printf("%d\t");
}
}
int main()
{
Seqlist L;
Initlist(&L);
InsertList(&L,1,0);
printSeqlist(L);
return 0;
}