···
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100//线性表的最大长度
typedef struct
{
int *elem;
int length;//线性表的当前长度
//int maxlength;//线性表的最大长度
}SqList;
SqList q;
int i,k;
//初始化函数
void initSqList(SqList& l)
{
l.elem=(int*)malloc(sizeof(int)*MAXSIZE);
l.length=0;
printf("请输入你要插入线性表的元素个数:");
int n;
scanf("%d\n",&n);
while(n<=0||n>MAXSIZE)
{
printf("元素个数不符合线性表的要求请重新输入:");
scanf("%d\n",&n);
}
for(int i=0;i<n;i++)
{
scanf("%d",&l.elem[i]);
l.length++;
}
}
void printSqList(SqList& l)
{
for(int i=0;i<l.length;i++)
{
printf("%d ",l.elem[i]);
}
printf("\n");
}
//查找函数
void getelem(SqList& l,int i,int& e)
{
e=l.elem[i-1];
}
//插入函数
void insertSqList(SqList& l,int i,int e)
{
for(int j=l.length-1;j>=i-1;j--)
{
l.elem[j+1]=l.elem[j];
}
l.elem[i-1]=e;
l.length++;
}
//删除函数
void deleteSqList(SqList& l,int i)
{
for(int j=i;j<l.length;j++)
{
l.elem[j-1]=l.elem[j];
}
l.length--;
}
//判断表是否为空
int listempty(SqList& l)
{
if(l.length==0)
{
return 0;
}
else
{
return 1;
}
}
void a()
{
printf("输入你要查找的元素的位置:");
int i,k;
scanf("%d",&i);
while(i>q.length||i<=0)
{
printf("你输入的位置不合法请重新输入:");
scanf("%d",&i);
}
getelem(q,i,k);
printf("%d\n",k);
}
void b()
{
printf("输入你要插入的位置:");
scanf("%d",&i);
while(i>q.length+1||i<=0)
{
printf("你输入的位置不合法请重新输入:");
scanf("%d",&i);
}
printf("输入你要插入的元素:");
scanf("%d",&k);
insertSqList(q,i,k);
printSqList(q);
}
void c()
{
printf("请输入你要删除的元素的位置:");
scanf("%d",&i);
while(i<=0||i>q.length)
{
printf("你输入的位置不合法请重新输入:");
scanf("%d",&i);
}
deleteSqList(q,i);
printSqList(q);
}
void d()
{
if(listempty(q))
{
printf("false\n");
}
else
{
printf("true\n");
}
}
int main()
{
initSqList(q);
while(1)
{
printf("\n");
printf("1查找\n");
printf("2显示线性表元素\n");
printf("3插入元素\n");
printf("4删除元素\n");
printf("5判断线性表是否为空\n");
printf("选择功能序号:");
int t;
scanf("%d",&t);
switch(t)
{
case 1:a();break;
case 2:printSqList(q);break;
case 3:b();break;
case 4:c();break;
case 5:d();break;
}
}
return 0;
}
···