#include"stdio.h"
#include"stdlib.h"
#define MAXSIZE 10
#define OK 1
#define YES 1
#define NO 0
struct Sqlist
{
int a[MAXSIZE];
int length;
};
void listlength(Sqlist *list)
{
printf("线性表得长度:%d\n",list->length);
}
int emptylist(Sqlist list) //判断线性表是否为空;
{
if(list.length==0)
{
return YES;
}
else
{
return NO;
}
}
int initlist(Sqlist *list)
{
list->length=0;
return OK;
}
void listinsert(Sqlist *list,int num,int n)
{
int i;
for(i=MAXSIZE-1;i>=n;i--)
{
list->a[i]=list->a[i-1];
}
list->a[n-1]=num;
list->length ++;
}
void printlist(Sqlist list)
{
printf("数据:");
for(int i=0;i<list.length;i++)
{
printf("%3d",list.a[i]);
}
}
void clearlist(Sqlist *list)
{
list->length=0;
}
int deldata(Sqlist *list,int num,int sign)
{
int i;
for(i=0;i<list->length;i++)
{
if(list->a[i]==num)
{
for(int k=i;k<list->length;k++)
{
list->a[k]=list->a[k+1];
}
sign=1;
}
}
if(sign==1)
{
list->length --;
}
return sign;
}
void locateElem(Sqlist list,int num)
{
int i,sign,j;
for(i=0;i<list.length;i++)
{
if(num==list.a[i])
{
sign=1;
j=i+1;
break;
}
else
{
sign=0;
}
}
if(sign==1)
{
printf("%d存在,在第%d位",num,j);
}
else
{
printf("%d不存在",num);
}
}
int main()
{
struct Sqlist list;
int i;
i=initlist(&list); //初始化性表
i=emptylist(list); //判断线性表是否为空
if(i=1)
{
printf("线 性 表 为 空\n");
}
else
{
printf("线 性 表 不 为 空\n");
}
for(int j=1;j<=5;j++)
{
listinsert(&list,j,1);
}
listlength(&list); //线性表的长度
printlist(list); //显示表里得数据项;
printf("\n");
clearlist(&list);
printf("清空线性表中:\n");
i=emptylist(list);
if(i=1)
{
printf("清空成功\n");
}
else
{
printf("ERROR\n");
}
printlist(list);
printf("\n");
printf("加入新的数据项:\n");
for(int j=1;j<=10;j++)
{
listinsert(&list,j,1);
}
printlist(list);
printf("\n");
listlength(&list);
//删除数据
int sign=0,num;
printf("删除的数据:");
scanf("%d",&num);
getchar();
sign=deldata(&list,num,sign);
if(sign==0)
{
printf("删除得元素不存在");
}
else
{
printf("删除后:");
printlist(list);
}
printf("\n");
//查找某一元素是否存在
printf("输入查找得元素:");
scanf("%d",&num);
getchar();
locateElem(list,num);
}