顺序表的基本操作

自学了一会,写顺序表的时候要先定义顺序表,然后初始化,才能做接下来的事情

#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;
 }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值