#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
#define Sqlist struct lists
struct lists{
int date[N];
int length;
};
//创建的表
Sqlist* sqlist_list()
{
//申请一段空间
Sqlist *l;
l=(Sqlist *)malloc(sizeof(Sqlist));
l->length=-1;
return l;
}
//插入数据
int sqlist_date(Sqlist *L,int m)
{
if(sqlist_jde(L)==1)
{
printf("data is full\n");
}
L->length++;
L->date[L->length]=m;
return 0;
}
//判断是否越界
int sqlist_jde(Sqlist *L)
{
if(L->length>=N-1)
{
return 1;
}
else
{
return 0;
}
}
//遍历
int sqlist_show(Sqlist *L)
{
int i;
for(i=0;i<=L->length;i++)
{
printf("%d ",L->date[i]);
}
printf("\n");
}
//在某个插入数据
int sqlist_inter_pos(Sqlist *L ,int n,int value)
{
int j;
if(sqlist_jde(L)==1)
{
printf("data is full\n");
return -1;
}
if((n<1)||(n>L->length+1))
{
printf("err\n");
return -1;
}
for(j=L->length;j>=n;j--)
{
L->date[j+1]=L->date[j];
}
L->date[n]=value;
L->length++;
return 0;
}
//判断链表是否为空
int sqlist_empty(Sqlist *L)
{
if(L->length<0)
{
return 1;
}
else
{
return 0;
}
}
// 尾删除
int sqlist_inter_tail(Sqlist *L)
{
if(sqlist_empty(L)==1)
{
printf("list is empty\n");
return -1;
}
int value;
value=L->date[L->length];
L->length--;//删除最后一个元素
return value;
}
//头删除
int sqlist_del_head(Sqlist *L)
{
int i;
if(sqlist_empty(L)==1)
{
printf("list is empty\n");
return -1;
}
int value;
value=L->date[0];
for(i=0;i<L->length;i++)
{
L->date[i]=L->date[i+1];
}
L->length--;
return value;
}
//按位置进行删除
int sqlist_del_pos(Sqlist *L,int n)
{
int i;
int value;
if(sqlist_empty(L)==1)
{
printf("list is empty\n");
return -1;
}
if((n<0)||(n>L->length))
{
printf("error\n");
}
value= L->date[n];
for(i=n;i<=L->length;i++)
{
L->date[i]=L->date[i+1];
}
L->length--;
return value;
}
//按位置进行查找
int sqlist_find_pos(Sqlist *L,int n)
{
if(sqlist_empty(L)==1)
{
printf("list is empty\n");
return -1;
}
if((n<0)||(n>L->length))
{
printf("error\n");
return -1;
}
int value;
value= L->date[n];
return value;
}
//按值查找
int sqlist_find_value(Sqlist *L,int value)
{
int flag=0,i;
if(sqlist_empty(L)==1)
{
printf("list is full\n");
return -1;
}
for(i=0;i<=L->length;i++)
{
if(L->date[i]==value)
{
return i;
flag=1;
}
}
if(flag==0)
{
printf("donot is find\n");
return -1;
}
return 0;
}
//按位置修改数据
int sqlist_resive_date(Sqlist *L,int n,int value)
{
if(sqlist_empty(L)==1)
{
printf("list is full\n");
return -1;
}
if((n<0)||(n>L->length))
{
printf("error\n");
return -1;
}
L->date[n]=value;
return 0;
}
//根据的老的值修改为新的数值
int sqlist_resive_oldate(Sqlist *L,int oldata,int newdata)
{
int flag=0;
int i;
if(sqlist_empty(L)==1)
{
printf("list is full\n");
return -1;
}
for(i=0;i<=L->length;i++)
{
if(L->date[i]==oldata)
{
L->date[i]=newdata;
flag=1;
}
}
if(flag==0)
{
printf("value is nod find\n");
return -1;
}
return 0;
}
//数据排序
void sqlist_sort(Sqlist *L)
{
int i,j,temp;
for(i=0;i<=L->length;i++)
{
for(j=0;j<=L->length-i-1;j++)
{
if(L->date[j]>L->date[j+1])
{
temp=L->date[j];
L->date[j]=L->date[j+1];
L->date[j+1]=temp;
}
}
}
}
//删除数据中重复的数据
int sqlist_re_data(Sqlist *L)
{
int i,j=0,k;
if(sqlist_empty(L)==1)
{
printf("list is empty\n");
return -1;
}
sqlist_sort(L);
for(i=0;i<=L->length-1;i++)
{
for(j=i+1;j<=L->length;)
{
if(L->date[i]==L->date[j])
{
for(k=j;k<=L->length-1;k++)
{
L->date[k]=L->date[k+1];
}
L->length--;
}
else
{
j++;
}
}
}
return 0;
}
int main(int argc,char *argv[])
{
struct lists * L;
int i;
int s;
L=sqlist_list();//获得的地址
sqlist_date(L,4);//插入数据
sqlist_date(L,2);
sqlist_date(L,6);
sqlist_date(L,4);
sqlist_date(L,4);
sqlist_show(L);
sqlist_inter_pos(L,2,8);
sqlist_show(L);
sqlist_inter_tail(L);
sqlist_show(L);
sqlist_del_head(L);
sqlist_show(L);
sqlist_del_pos(L,2);
sqlist_show(L);
printf("postion=%d\n",sqlist_find_pos(L,4));
printf("postion=%d\n",sqlist_find_value(L,8));
sqlist_resive_date(L,3,10);
sqlist_show(L);
sqlist_resive_oldate(L,8,9);
sqlist_show(L);
sqlist_sort(L);
sqlist_show(L);
sqlist_re_data(L);
sqlist_show(L);
return 0;
}