#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
///定义结构体
typedef int elemtype;
typedef struct
{
elemtype data[MAXSIZE];
int length;
}SqList;
///初始化顺序表
SqList *InitList(SqList *L)
{
L=(SqList *)malloc(sizeof(SqList));
L->length=0;
return L;
}
///插入元素
int InsItem(SqList *L,int pos,int item)
{
int i;
if(pos<1||pos>L->length+1)
{
printf("Position is not correct!\n");
return 0;
}
else if(pos>=MAXSIZE)
{
printf("The list is overflow.\n");
return 0;
}
else
{
for(i=L->length-1;i>=pos-1;i--)
{
L->data[i+1]=L->data[i];
}
L->data[pos-1]=item;
L->length++;
return 1;
}
}
///删除元素1(根据位置)
int DelItem1(SqList *L,int pos)
{
int i;
if(L->length==0)
{
printf("The list is empty!\n");
return 0;
}
else if(pos<1||pos>L->length)
{
printf("Position is not correct!\n");
}
else
{
for(i=pos-1;i<L->length-1;i++)
{
L->data[i]=L->data[i+1];
}
L->length--;
return 1;
}
}
///删除操作2(根据值,只删除一个)
int DelItem2(SqList *L,int item)
{
int i;
if(L->length==0)
{
printf("The list is empty!\n");
return 0;
}
else
{
for(i=0;i<L->length;i++)
{
if(L->data[i]==item)
{
DelItem1(L,i+1);
break;
}
}
return 1;
}
}
///删除操作3(根据值,删除多个相同的值)
int DelItem3(SqList *L,int item)
{
int i;
if(L->length==0)
{
printf("The list is empty!\n");
}
else
{
for(i=0;i<L->length;i++)
{
if(L->data[i]==item)
{
DelItem1(L,i+1); //与2的区别在于少了break;
}
}
return 1;
}
}
///定位查找1(返回第一个位置)
int LocItem1(SqList *L,int item)
{
int i;
if(L->length==0)
{
printf("The list is empty!\n");
return 0;
}
else
{
for(i=0;i<L->length;i++)
{
if(L->data[i]==item)
{
return i+1;
}
}
}
}
///定位查找2(打印多个位置)
int LocItem2(SqList *L,int item)
{
int i;
if(L->length==0)
{
printf("The list is empty!\n");
return 0;
}
else
{
for(i=0;i<L->length;i++)
{
if(L->data[i]==item)
{
printf("%d ",i+1);
}
}
}
}
///置空顺序表
int EmptyList(SqList *L)
{
L->length=0;
return 1;
}
///判空
int ListEmpty(SqList *L)
{
if(L->length==0)
{
printf("The list is empty!\n");
return 0;
}
else
{
printf("The list is no empty!\n");
return 1;
}
}
///逆置顺序表
SqList *Inverse(SqList *L)
{
int i,temp;
for(i=0;i<L->length/2;i++)
{
temp=L->data[i];
L->data[i]=L->data[L->length-1-i];
L->data[L->length-1-i]=temp;
}
return L;
}
///顺序表排序(冒泡排序/升序)
SqList *Sort(SqList *L)
{
///同数组排序同理
int i,j,temp;
for(i=0;i<L->length;i++)
{
for(j=0;j<L->length;j++)
{
if(L->data[i]<L->data[j])
{
temp=L->data[i];
L->data[i]=L->data[j];
L->data[j]=temp;
}
}
}
}
///遍历顺序表
int ListTraverse(SqList *L)
{
int i;
if(L->length==0)
{
printf("The list is empty!\n");
return 0;
}
for(i=0;i<L->length;i++)
{
printf("%d ",L->data[i]);
}
printf("\n");
return i;
}
int main()
{
SqList *L;
L=(SqList *)malloc(sizeof(SqList));
}
线性表(顺序表)
最新推荐文章于 2022-07-29 20:26:16 发布