自学了一会,写顺序表的时候要先定义顺序表,然后初始化,才能做接下来的事情
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
//相当于定义了一个顺序表是struct类型
typedef struct
{
int *elem;//储存空间的基地址
int length;//当前的长度
}SqList;//顺序表的结构类型为sqlist
//将顺序表初始化
int chushihua(SqList &L)
{
L.elem=new int[MAXSIZE];//开辟空间
L.length=0;//初始长度为0
return 0;
}
//在顺序表里填入数据
void creat(SqList &L,int n)
{
printf("需要存储元素的个数:");
scanf("%d",&n);
printf("输入%d个数: ",n);
if(n<0||n>MAXSIZE)
{
exit(1);
}
for(int i=0;i<n;i++)
{
scanf("%d",&L.elem[i]);//不要随便在scanf里面的%d后面加空格
L.length++;
}
}
//输出顺序表
int print(SqList L)//这里没有&L!!!!!
{
if(L.length)
{
printf("输出顺序表中的元素: ");
for(int i=0;i<L.length;i++)
{
printf("%d ",L.elem[i]);
}
printf("\n");
}
else{
printf("错误!!");
}
return 0;
}
//检索顺序表中的元素
int search(SqList &L,int n)
{
printf("请输入要查找的元素的值: ");
scanf("%d",&n);
int i=0;
int flag=0;
for(i=0;i<L.length;i++)
{
if(L.elem[i]==n)
{
printf("存在该元素且位置为%d\n",i+1);
flag=1;
break;
}
}
if(flag==0)
{
printf("顺序表中不存在该元素!");
}
return 0;
}
//在顺序表中插入元素
int insert(SqList &L,int a,int n)
{
printf("请输入要插入的位置:");
scanf("%d",&n);
if(n==1||n>MAXSIZE)
{
exit(1);//退出整个程序
}
for(int i=L.length+1;i>=n;i--)插入后元素要后移
{
L.elem[i]=L.elem[i-1];
}
printf("请输入要插入的数:");
scanf("%d",&a);
L.elem[n-1]=a;//插入
L.length++;//长度加一
printf("插入后顺序表输出为:");
print(L);//调用print函数输出
return 0;
}
//删除元素
int Delete(SqList &L,int n)//这个地方Devc++运行时不能写delete必须写Delete
{
printf("请输入要删除的位置:");
scanf("%d",&n);
if(n<0||n>MAXSIZE)
{
exit(1);
}
for(int i=n;i<L.length;i++)//删除之后元素前移
{
L.elem[i-1]=L.elem[i];
}
L.length--;//长度减一
printf("删除后的顺序表输出为:");
print(L);//调用print函数输出
return 0;
}
int main()
{
SqList L;//变量定义语句
int n,a;
chushihua(L);
creat(L,n);
print(L);
search(L,n);
insert(L,a,n);
Delete(L,n);
return 0;
}