#include<stdio.h>
#include<stdlib.h>
struct linerList
{
char*element;
int arrayLength;
int listSize;
};
struct linerList*createList(int capacity)
{
if(capacity < 1)
{
printf("创建顺序表失败!");
return NULL;
}
struct linerList* list = (struct linerList*)malloc(sizeof(struct linerList));
list->arrayLength = capacity;
list->element = (char*)malloc(sizeof(list->arrayLength));
list->listSize = 0;
return list;
}
void changeArrayCapacity(char**array,int oldLength,int newLength)
{
if(newLength<0)
{
printf("数组扩充失败");
return;
}
int length=oldLength>newLength?oldLength:newLength;
*array = (char*)realloc(*array,length*sizeof(char));
}
void copyBackWard(char*array,int arrayNum,int theIndex)
{
for(int i=arrayNum+1;i > theIndex; i--)
{
array[i] = array[i-1];
}
}
void insertElement(struct linerList* list, int theIndex, int theElement)
{
if(theIndex<0 || theIndex>list->listSize)
{
printf("索引无效!\n");
return;
}
if(list->listSize == list->arrayLength)
{
changeArrayCapacity(&list->element,list->arrayLength,2 * list->arrayLength);
list->arrayLength=2 * list->arrayLength;
}
copyBackWard(list->element, list->listSize,theIndex);
list->element[theIndex] = theElement;
list->listSize++;
}
void printList(struct linerList* list)
{
for(int i=0;i<list->listSize;i++)
{
printf("%c\t", list->element[i]);
}
printf("\n");
}
int main()
{
struct linerList*list = createList(2);
insertElement(list, 0, 'A');
insertElement(list, 0, 'B');
printList(list);
system("pause");
return 0;
}