版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40411915/article/details/82712431
实现代码:
#ifndef __LINEARLIST_H__
#define __LINEARLIST_H__
#include <malloc.h>
#include <stdio.h>
typedef struct
{
int* base;
int size;
int len;
}LinearList,* pList;
int initList(pList list, int size)
{
if(size < 1)
size=100;
list->base = (int*) malloc(size*sizeof(int));
if(!list->base)
return 0;
list->size = size;
list->len = 0;
return 1;
}
int listLength(pList list)
{
return list->len;
}
int addTailData(pList list, int e)
{
if(!list->base)
return 0;
list->base[list->len] = e;
list->len++;
return 1;
}
int getElem(pList list, int pos, int* e)
{
if(pos<1 || pos>list->len || !list->base)
return 0;
*e = list->base[pos-1];
return 1;
}
int listInsert(pList list,int pos, int e)
{
int i=0;
if(pos<1 || pos>list->len || !list->base || list->size<list->len+1)
return 0;
for(i=list->len+1; i>=pos; --i)
list->base[i] = list->base[i-1];
list->base[i]=e;
list->len++;
return 0;
}
int reverse(pList list)
{
int i = 0;
if(!list)
return 0;
for(i; i<list->len; ++i)
{
printf("%d ", list->base[i]);
}
printf("\n");
return 1;
}
int listDelete(pList list, int pos, int* e)
{
int i=pos-1;
if(pos<1 || pos>list->len || !list->base)
return 0;
*e = list->base[i];
for(i; i<list->len-1; ++i)
{
list->base[i] = list->base[i+1];
}
list->len--;
return 1;
}
#endif //__LINEARLIST_H__
测试代码:
#include <stdio.h>
#include "Linearlist.h"
int main()
{
int val = -1;
LinearList list;
initList(&list, 10);
addTailData(&list, 1);
addTailData(&list, 2);
addTailData(&list, 3);
reverse(&list);
listInsert(&list, 1, 50);
reverse(&list);
getElem(&list, 2, &val);
listInsert(&list, 3, 20);
printf("%d \n", val);
reverse(&list);
listDelete(&list, 3, &val);
printf("%d \n", val);
reverse(&list);
return 0;