#include <stdio.h>
#include <stdlib.h>
#define LIST_INIT_SIZE 100//线性表存储空间的初始化分配量
#define LISTINCREMENT 10//线性表存储空间的分配增量(当存储空间不够时要用到)
typedef int ElemType;
struct List
{
ElemType *elem;//存储空间的基地址
int length;//当前线性表的长度
int listsize;//当前分配的存储容量
};
int InitList(struct List *L)
{
L->elem = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));//开辟一个存储空间,并把这块存储空间的基地址赋值给elem
if(!L->elem)
{
return -1;//空间分配失败
}
L->length = 10;//当前长度
L->listsize = LIST_INIT_SIZE;//当前分配量
return 0;
}
/*
* 插入操作
*/
int ListInsert(struct List *L,int i,ElemType e)
{
//判断i是否在范围内
if (i<1 || i>L->length + 1)return -1;
//判断存储空间是否够用
if(L->length >= L->listsize){
return -1;
}
//插入操作
if (i<=L->length) {
for (int k=L->length-1; k>=i-1; k--) {
L->elem[k+1] = L->elem[k];
}
}
L->elem[i-1] = e;
L->length ++;
return 0;
}
/**
* 初始化数据
*/
void ListInit(struct List *L)
{
printf("please input data\n");
int x=1;
for (int i = 0; i<L->length; i++) {
L->elem[i] = x;
x*=2;
}
}
int ListDelete(struct List *L,int i,ElemType *e)
{
//判断删除位置合法
if (i<1||i>L->length) {
return -1;
}
if (L->length ==0) {
return -1;
}
//取出删除元素
*e = L->elem[i-1];
for (int j = i;j<L->length;j++) {
L->elem[j-1] = L->elem[j];
}
L->length--;
return 0;
}
/**
*查找操作
*/
int Locate(struct List *L,ElemType e)
{
int i = 0;
while (i<L->length&&L->elem[i]!=e) {
i++;
}
if (i<=L->length) {
return i+1;
}else
{
return -1;
}
return 0;
}
int main()
{
struct List L;
/**
* 初始化线性表
*/
InitList(&L);
/**
* 初始化数据
*/
ListInit(&L);
//查找
printf("8元素在表中的%d位置\n", Locate(&L, 8));
//插入操作
ListInsert(&L, 1, 3);
for (int i =0; i<L.length; i++) {
printf("\n%d,",L.elem[i]);
}
//删除元素
ElemType e;
ListDelete(&L, 1, &e);
for (int i =0; i<L.length; i++) {
printf("\n%d,",L.elem[i]);
}
}
线性表的顺序存储结构(查找、插入、删除等)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 近几次总是讨论着各种各样的表,难免有些晕。这次的内容依然是一个表(笑哭脸),为了不“晕表”,我们先来理一理:这是个...
- 数据结构与算法--线性表的顺序存储结构 线性表是一个序列,可以想象成一群有先后顺序的的元素集合。线性表是有限序列,...