#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType elem[MAXSIZE];
int length;
}SeqList;//定义一个顺序表
SeqList *L;
//初始化顺序表
void init_SeqList(SeqList *L)
{
L->length=0;//长度为0,顺序表自然为空
}
//插入函数
int Inser_SeqList(SeqList *L,int i,ElemType x)
{
int j;
if(L->length==MAXSIZE-1)//表满
{
printf("表满!");
return -1;
}
if(i<1||i>L->length+1)//0号位置不放数据,这句话的意思
{
printf("表满!");
return -1;
}
//排除了所有不能插入的情况后,可以直接开始插入
for(j=L->length;j>=i;j--)
L->elem[j+1]=L->elem[j];//逐个移动位置,直到把待插入的位置空出来
L->elem[i]=x; //待插入的位置空余后,把待插入的数据赋值给那个位置
L->length++;
return 1;
//1表示成功,-1表示不成功
}
//删除函数 待删除的数据表,待删除的位置
int Delete_SeqList(SeqList *L,int i)
{
int j;
if(i<1||i>L->length)
{
printf("不存在%d位置,这个元素",i);
return -1;
}
for(j=i;j<=L->length-1;j++)
{
L->elem[j]=L->elem[j+1];//直接向删除位置进行数据移动,把删除位置的数据覆盖掉,完成删除(顺序表)
}
L->length--;//长度收缩,完全丢掉
return 1;
}
//查找函数
int Location_SeqList(SeqList *L,ElemType x)
{
int i=1;
//第一个条件跳出,表长不够,或者说查找数据不在此内
//第二个条件跳出,数据被找到了
while(i<L->length&&L->elem[i]!=x)
i++;
if(i>L->length)
return -1;
else
return i;
}
int Location_SeqList1(SeqList L,int i)
{
//第一个条件跳出,表长不够,或者说查找数据不在此内
//第二个条件跳出,数据被找到了
while(i<L.length||i>0)//判断位置的合法性
return L.elem[i];
}
//判断线性表是否为空
int ListEmpty(SeqList *L)
{
if(L->length!=0)
return 1;
else
return -1;
}
/* int ListEmpty1(SeqList *L)
{
int i=1;
int j=0;
while(i<=L->length)
{
if(L->elem[i]!=0)
j++;
}
if(j!=0)
return j;
else
return 0;
}
*/
//输出表的长度
int LongList(SeqList *L)
{
if(L->length!=0)
return L->length;
else
return 1;
}
//清空表
int ClearList(SeqList *L)
{
L->length=0;//长度为0,顺序表自然为空
return 1;
}
int main()
{
SeqList L1;
int i,num;
init_SeqList(&L1);//预先清空顺序表,准备开始存放数据
L1.length=6;
printf("请输入6个数据!\n");
for(i=1;i<=6;i++)
{
scanf("%d",&L1.elem[i]);
}
num=Inser_SeqList(&L1,4,6);
printf("插入返回结果为:%d,其中:1表示成功,-1表示不成功 \n",num);
for(i=1;i<=7;i++)
{
printf("%3d",L1.elem[i]);
}
num=Delete_SeqList(&L1,2);
printf("\n删除返回结果为:%d,其中:1表示成功,-1表示不成功 \n",num);
for(i=1;i<=6;i++)
{
printf("%3d",L1.elem[i]);
}
{
printf("%3d",L1.elem[i]);
}
printf("\n");
num=Location_SeqList1(L1,2);
printf("取二号元素为:%d\n",num);
num=ListEmpty(&L1);
printf("%d\n",num);
if(num==-1)
{
printf("数据表ture表示空,false表示非空:%c%c%c%c\n",116,117,114,101);
}
else if(num==1)
{
printf("数据表ture表示空,false表示非空:%c%c%c%c%c\n",102,97,108,115,101);
}
else{
printf("程序错误!");
}
num=LongList(&L1);
printf("表长为:%d\n",num);
printf("如果结果为负,表示为空表\n");
ClearList(&L1);
num=LongList(&L1);
printf("清空表:如果结果为1,表示为空表(清空成功),为其它数字表示未成功\n");
printf("结果为:%d\n",num);
}
版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://www.cnblogs.com/5ran2yl/p/16372427.html,作者:~java小白~,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。