《数据结构》--2.2-1顺序表的定义
《数据结构》--2.2-1顺序表的定义
·
《数据结构》–2.2-1顺序表的定义
静态分配
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10 //定义线性表数组的元素个数是10个 也就是静态线性表的最大长度,数组其实就是一个侠义的线性表
typedef int ElemType;
typedef struct {
ElemType data[MaxSize]; //静态的“数组”存放数据元素
int length; //顺序表的当前长度
}Sqlist;
//基本操作--初始化一个顺序表
void InitList(Sqlist &L)
{
for (int i = 0; i < MaxSize; i++)
{
L.data[i] = 0; //将所有的数组元素都设置为默认的初始值0
L.length = 0;
}
}
int main()
{
Sqlist L; //声明一个顺序表
InitList (L); //初始化一个顺序表
return 0;
动态分配
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define InitSize 10
typedef struct { //自定义Sqlist 结构体
int * data; //指示动态分配数组的指针,指向了数据表中第一个数据元素
int MaxSize; //顺序表中最大数据元素个数
int length; //顺序表中的当前长度
}Sqlist;
void InitList(Sqlist &L)
{
L.data = (int*)malloc(InitSize * sizeof(int)); //用malloc 申请一个连续的存储空间
L.length = 0;
L.MaxSize = InitSize;
}
void IncreaseSize(Sqlist &L, int len)
{
int* p = L.data;
L.data = (int*)malloc((InitSize + len) * sizeof(int));
for (int i = 0; i < L.length; i++)
{
L.data[i] = p[i];
}
L.MaxSize = L.MaxSize + len;
free(p);
}
void DisplayList(Sqlist& L)
{
for (int i = 0; i < L.MaxSize; i++)
{
printf("data%d=%d\n", i, L.data[i]);
}
}
int main()
{
Sqlist L; //声明一个顺序表
InitList(L); //初始化一个顺序表
for (int i = 0; i < InitSize; i++)
{
L.data[i] = i;
L.length = i;
}
IncreaseSize(L, 5);
for (int i = 0; i < L.MaxSize; i++)
{
L.data[i] = i;
L.length = i;
}
DisplayList(L);
}
删除和添加操作
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 10 //定义线性表数组的元素个数是10个 也就是静态线性表的最大长度,数组其实就是一个侠义的线性表
typedef int ElemType;
typedef struct {
ElemType data[MaxSize]; //静态的“数组”存放数据元素
int length; //顺序表的当前长度
}Sqlist;
//基本操作--初始化一个顺序表
void InitList(Sqlist& L)
{
for (int i = 0; i < MaxSize; i++)
{
L.data[i] = 0; //将所有的数组元素都设置为默认的初始值0
L.length = 0;
}
}
bool ListInsert(Sqlist& L, int i, int e)
{
if (i<1 || i>L.length + 1)
{
return false;
}
if (L.length >= MaxSize)
{
return false;
}
for (int j = L.length; i <= j; j--)
{
L.data[j] = L.data[j - 1];
}
L.data[i - 1] = e;
L.length++;
return true;
}
bool ListDekete(Sqlist &L,int i,int &e)
{
if (i<1 || i>L.length)
{
return false;
}
e = L.data[i - 1];
for (int j = L.length; i < L.length; j++)
{
L.data[i - 1] = L.data[i];
}
L.length--;
return true;
}
int main()
{
Sqlist L; //声明一个顺序表
InitList(L); //初始化一个顺序表
for (int i = 0; i < MaxSize; i++)
{
L.data[i] = i;
L.length = i;
}
int e = -1;
return 0;
}

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)