#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define ElemType int
#define InitSize 30
typedef struct{
ElemType *data;
int MaxSize,length;
}SqList;
void InitList(SqList &L,int maxsize)
{
L.data= (ElemType *) malloc(sizeof(ElemType)*InitSize);
if(L.data ==NULL)
{
printf("动态内存分配失败");
exit(-1);
}
else
{
L.MaxSize = maxsize;
L.length = 0;
}
return;
}
bool CreateList(SqList &L,int n)
{
int i;
if(n<0 || n>L.MaxSize)
false;
printf("请向线性表中输入值:");
for(i=0;i<n;i++)
{
scanf("%d",&L.data[i]);
L.length++;
}
return true;
}
bool InsertList(SqList &L,int i,ElemType e)
{
if(i<1 || i>L.length+1)
{
printf("位置无效\n");
return false;
}
if(L.length>=L.MaxSize)
{
printf("当前存储空间已经满\n");
return false;
}
for(int j= L.length;j>=i;j--)
{
L.data[j] = L.data[j-1];
}
L.data[i-1] = e;
L.length++;
return true;
}
void PrintList(SqList L)
{
printf("当前顺序表所有元素:\n");
for(int i=0;i<L.length;i++)
{
printf("%d ",L.data[i]);
}
printf("\n");
}
bool DeleteList(SqList &L,int i,ElemType &e)
{
int j;
if(i<1 || i>L.length)
{
printf("输入的位置无效!");
return false;
}
e = L.data[i-1];
for( j = i;j<L.length;j++)
{
L.data[j-1] = L.data[j];
}
L.length--;
return true;
}
int LocateElem(SqList L,ElemType e,ElemType &t)
{
for(int i= 0;i<L.length;i++)
{
if(L.data[i] == e)
{
t=i+1;
}
}
return 0;
}
void ReverseList(SqList &L)
{
int i,t;
for(i = 0;i<L.length/2;i++)
{
t = L.data[i];
L.data[i] = L.data[L.length-i-1];
L.data[L.length-i-1] = t;
}
}
int main(void)
{
SqList L;
int e;
int t;
InitList(L,20);
CreateList(L,5);
printf("%d\n",L.length);
InsertList(L,3,9);
PrintList(L);
LocateElem(L,3,t);
printf("按值查找的位置为:%d\n",t);
ReverseList( L);
PrintList(L);
return 0;
}
}