#include <stdio.h>
#include <stdlib.h>
#define InitSize 10
typedef struct
{
int *data;
int length;
int MaxSize;
}SeqList;
void InitSeqlist(SeqList *L)
{
L->data = (int*)malloc(sizeof(int)*InitSize);
L->length = 0;
L->MaxSize = InitSize;
}
void InsertList(SeqList *L,int i,int e)
{
if(i < 1 || i > L->MaxSize)
{
printf("插入位置不合法\n");
return;
}
if(L->length>=L->MaxSize)
{
printf("线性表已满\n");
return;
}
for(int j = L->length;j >= i;j--)
{
L->data[j] = L->data[j-1];
}
L->data[i - 1] = e;
L->length++;
}
void DelectValue(SeqList *L,int i)
{
if(i < 1 || i>L->length)
{
printf("删除的位置不合法\n");
}
for (int j = i; j < L->length; j++)
{
L->data[j-1] = L->data[j];
}
L->length--;
}
void IncreaseSize(SeqList *L,int len)
{
int *p = L->data;
p = (int *)malloc(sizeof(int)*(InitSize+len));
for (int i = 0; i < L->MaxSize; i++)
{
p[i] = L->data[i];
}
L->MaxSize = L->MaxSize+len;
free(p);
}
void GetElem(SeqList *L,int i)
{
if(i<1||i>L->length)
{
printf("查找位置不合法\n");
}
printf("找到了第%d位置的元素%d\n",i,L->data[i-1]);
}
void GetValues(SeqList*L,int e)
{
for (int i = 0; i < L->length; i++)
{
if(L->data[i] == e)
{
printf("找到了该元素%d,该元素的下表为%d\n",e,i);
return;
}
}
printf("没有找到该元素%d\n",e);
}
void ShowList(SeqList *L)
{
for (int i = 0; i < L->length; i++)
{
printf("data[%d] = %d\n",i,L->data[i]);
}
printf("顺序表中数据的个数 length = %d\n",L->length);
}
int main()
{
SeqList L;
InitSeqlist(&L);
for (int i = 1; i <= L.MaxSize; i++)
{
InsertList(&L,i,i);
}
DelectValue(&L,3);
GetElem(&L,3);
GetValues(&L,8);
IncreaseSize(&L,5);
ShowList(&L);
return 0;
}