#include <stdio.h>
#include<malloc.h>
typedef struct
{
int data[10];
int length;
}SqList;
void CreateList(SqList *&L,int a[],int n)
{
int i=0,k=0;
L= (SqList*)malloc(sizeof(SqList));
while(i<n)
{
L->data[k]=a[i];
k++;i++;
}
L->length = k;
}
void DispList(SqList *L)
{
printf("顺序表为:(");
for(int i=0; i<L->length; i++)
{
if(i==L->length-1)
{
printf("%d",L->data[i]);
}
else
{
printf("%d,",L->data[i]);
}
}
printf(")\n");
}
bool ListEmpty(SqList *L)
{
if(L->length==0)
{
printf("\n该表为空表\n\n");
}
else
{
printf("\n该表不为空表\n\n");
}
}
int ListLength(SqList *L)
{
printf("当前顺序表的长度为:%d\n\n",L->length);
}
bool GetElem(SqList *L,int i,int &e)
{
if(i<1||i>L->length)
{
printf("超出搜索范围\n\n");
}
else
{
e = L->data[i-1];
printf("该表在第%d个位置的元素为:%d\n\n",i,e);
}
}
int LocateElem(SqList *L,int &a)
{
int i=0;
while(i<L->length && L->data[i]!= a)
{
i++;
}
if (i >= L->length)
{
printf("该顺序表不存在这一元素\n");
}
else
{
printf("该元素的位置为:%d\n",i+1);
}
}
bool ListInsert(SqList *L,int i,int &b)
{
int j;
if(i<1||i>L->length+1)
{
printf("超出插入范围\n");
}
else
{
for(j=L->length+1;j>i-1;j--)
{
L->data[j] = L->data[j-1];
}
L->data[i-1]= b;
L->length++;
printf("插入后的");
DispList(L);
ListLength(L);
}
}
bool ListDelete(SqList *L,int i)
{
if(i<1||i>L->length)
{
printf("超出删除范围\n");
}
else
{
int e = L->data[i-1];
for(int j=i-1; j<L->length; j++)
{
L->data[j]=L->data[j+1];
}
L->length--;
printf("被删除的元素为:%d\n",e);
DispList(L);
ListLength(L);
}
}
void ClearList(SqList *L)
{
L->length = 0;
DispList(L);
ListLength(L);
}
void Destory(SqList *L)
{
free(L);
L->data[10] = NULL;
L->length = 0;
printf("销毁成功");
}
int main()
{
int e,a,b,c;
int i,i_2,i_3;
SqList *L;
int m;
printf("请输入要创建的数组元素个数:");
scanf("%d",&m);
int u[m];
for(i=0; i<m; i++)
{
int h;
printf("请输入第%d个元素的值:",i+1);
scanf("%d",&h);
u[i] = h;
}
CreateList(L,u,m);
DispList(L);
ListEmpty(L);
ListLength(L);
printf("请输入你想访问的元素位置:");
scanf("%d",&i);
GetElem(L,i,e);
printf("请输入你想搜索的元素:");
scanf("%d",&a);
LocateElem(L,a);
printf("\n请输入你要插入的元素:");
scanf("%d",&b);
printf("请输入你要插入的元素位置:");
scanf("%d",&i_2);
ListInsert(L,i_2,b);
printf("请输入你要删除的元素的位置:");
scanf("%d",&i_3);
getchar();
ListDelete(L,i_3);
char s;
printf("是否要将该表置为空表(是/C)?\n");
scanf("%c",&s);
getchar();
if(s == 'C')
{
ClearList(L);
}
char y;
printf("是否要销毁该顺序表(是/Y)?\n");
scanf("%c",&y);
if(y == 'Y')
{
Destory(L);
}
return 0;
}
C语言实现数据结构的顺序表
最新推荐文章于 2024-09-07 23:19:25 发布