顺序表

C语言数据结构期末复习之顺序表基本算法的实现

#include<stdio.h>
#define MaxSize 30
typedef int DataType; 
typedef struct{
	
	DataType data[MaxSize];
	int length;
}Sqlist; 
//创建顺序表结构体
 
void InitList(Sqlist *L)
{
	L->length=0;
}
//顺序表的初始化 

bool ListEmpty(Sqlist *L)
{
	return (L->length==0);
}
//判断顺序表是否为空返回bool类型 

void Destroy(Sqlist L)
{
	
}
//销毁顺序表 

int getLength(Sqlist L)
{
	return L.length;
}
//返回顺序表的长度 

void DispList(Sqlist *L)
{
	int i;
	for(i=0;i<L->length;i++)
	{
	printf("%d\t",L->data[i]);
	}
	printf("\n");
}
//打印顺序表 

void CreatList(Sqlist *L,DataType a[],int n)
{
	int i;
	InitList(L);
	for(int i=0;i<n;i++)
	{
	L->data[i]=a[i];
	}
	L->length=n;	
 } 
//创建顺序表 

int LocateElem(Sqlist L,DataType e)
{
	int i=0;
	while(i<L.length&&L.data[i]!=e)
	{
		i++;
	}
	if(i>=L.length)
	return 0;
	else
	return i+1;
	
	
}
//返回指定元素的位置

int getElem(Sqlist L,int i,DataType *e)
{
	if(i<0||i>L.length)
	return 0;
	else
	*e=L.data[i-1];
	return *e;
 } 
 //返回指定位置的元素
 
void Insert(Sqlist *L,int i,DataType n)
{
	int j;
	if(i<1||i>L->length)
	printf("数据错误!\n");
	for(j=L->length;j>i;j--)
	{
		L->data[j]=L->data[j-1];
		
	}
	L->data[i]=n;
	L->length++;
 } 
 //在指定位置插入指定元素 
 void Delete(Sqlist *L,int i)
 {
 	if(i<0||i>L->length)
 	printf("数据错误!");
 	else
 	for(int j=i;j<L->length;j++)
 	L->data[j-1]=L->data[j];
	L->length--; 
 }
 //删除指定位置的元素 
int main()
{
	Sqlist *L;
	int n,obj,position,value,InsertPos,InsertVal,DelPos;
	printf("请输入数组元素的长度:");
	scanf("%d",&n);
    DataType a[n];
	printf("请输入要为顺序表赋值的数组元素:");
	for(int i=0;i<n;i++)
	{
	scanf("%d",a+i);
	}
	for(int i=0;i<n;i++)
	printf("%d\t",a[i]);
	printf("\n");
	printf("建立顺序表L:\n");
	CreatList(L,a,n);
	DispList(L);
	printf("请输入要查找的元素:\n");
	scanf("%d",&obj);
	printf("%d在顺序表L中的位置是%d\n",obj,LocateElem(*L,obj));
	printf("请输入要查找的元素的位置:\n");
	scanf("%d",&position);
	printf("%d位置上的元素为%d\n",position,getElem(*L,position,&value));
	
	printf("请输入顺序表要插入的位置和元素:\n");
	scanf("%d %d",&InsertPos,&InsertVal);
	Insert(L,InsertPos,InsertVal);
	DispList(L);
	
	printf("请输入要删除元素的位置:");
	scanf("%d",&DelPos);
	Delete(L,DelPos);
	DispList(L); 
	
	printf("顺序表L的长度为:%d\n",getLength(*L));
	printf("顺序表L是否为null?%d",ListEmpty(L));//bool类型可用整型1或0输出  1----true 0----false 
	
	
}

在这里插入图片描述
还有一个月就要期末考试了,得把复习放在日常安排上了。今天下午没课然后就想着复习复习基本算法叭。
从一年前的只会hello world的那个编程小白痴变成了如今能敲上百行的系统的小白,这中间需要的是拼尽全力。
爱编程,爱生活。
加油,冲鸭!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值