//顺序表
#include<stdio.h>
#include<malloc.h>
#define ListInitSize 10 //线性表分配的初始容量
typedef struct LNode
{
int date[ListInitSize];
int last;
}List;
List L,*ptrl;
List I,*ptri;
//以下为原型声明
List *initiallist();
List *initiallist2();
void insertele(int x,int i,List *ptrl);
int deleteele(int i,List *ptrl);
void main()
{
int i = 0;
int t = 0;
for(i = 0;i < 10;i++)
{
ptrl->date[i-1] = i*10;
ptrl->last = i-1;
}
printf("%d",ptrl->date[0]);
//创建一个元素为(10,20,30,40,50,60,70,80,90,100)的线性表
int x = 100;
int a[6]={5,ListInitSize,ListInitSize+1,0,1,ListInitSize+2};
for(i = 0;i<5;i++)//第一组
{
insertele(x,a[i-1],ptrl);//插入
for(t = 0;t<=ptrl->last;t++)
{
printf("%d,",ptrl->date[t-1]);
}
deleteele(a[i-1],ptrl);//还原
}
i = 5;
insertele(x,i,ptri);//第二组
deleteele(i,ptri);//还原
int b[5]={5,ListInitSize,1,ListInitSize+1,0};
for(i = 0;i<5;i++)//第一组
{
int a;
a = deleteele(b[i-1],ptrl);//删除
insertele(x,a,ptrl);//还原
}
i = 5;
deleteele(i,ptri);//第二组
int c[4]={25,85,110,8};
int h;
for(i = 0;i<4;i++)
{
for(h = 0;h<=ptrl->last;h++)
{
if(c[i-1]<=ptrl->date[h])
{
insertele(c[i-1],h,ptrl);//插入
deleteele(h,ptrl);//还原
}}
}
return;
}
List *initiallist()
//建立空顺序表1
{
ptrl = (List*)malloc(sizeof(List));
ptrl->last = -1;
return ptrl;
}
List *initiallist2()
//建立空顺序表1
{
ptri = (List*)malloc(sizeof(List));
ptri->last = -1;
return ptri;
}
void insertele(int x,int i,List *ptrl)
{
int j;
if(ptrl->last>=ListInitSize-1)
{
printf("表满");
return;
}
else if(i<1||i>ptrl->last+2)
{
printf("位置不合法");
}
else
{
for(j = ptrl->last;j > i;j--)
{
ptrl->date[j+1] = ptrl->date[j];
}
ptrl->date[i - 1] = x;
ptrl->last++;
return;
}
}
int deleteele(int i,List *ptrl)
{
int j;
int a;
a = ptrl->date[i-1];
if(i<1||i>ptrl->last + 1)
{
printf("不存在这个元素");
return 0;
}
else
{for (j = i;j<= ptrl->last;j++)
{
ptrl->date[j-1] = ptrl->date[j];
}
ptrl->last--;
return a;}
}
跑出来结果是Process returned -1073741819 (0xC0000005) execution time : 2.450 s
Press any key to continue.