数据结构:线性表——顺序表

之前的blog有发过一篇有关于顺序表的,但是当时觉得自己写的代码可能并不是很好,所以重新学习进行了学习,或许下面这些代码可以记录一下我学习顺序表的过程(代码只有几十行,别嫌弃哈~):

//一、1.线性表(顺序表)-Yufeng Zhang 

//头文件部分 
#include <stdio.h>
#include <stdlib.h>

//顺序表创建部分 
#define MAXSIZE 20			//存储空间的初始分配量 
typedef int ElemType;	//将int类型定义为ElementType
typedef int Status;			//Status是函数基础,其值是函数状态的状态代码 

typedef struct				
{
	ElemType *elem;		 
	int length; 			//定义顺序表的存储元素大小 
} SqList;					//顺序表的别名叫做SqList 


//1.创建空的线性顺序表
void InitList(SqList* L)
{
	L->elem=(ElemType *)malloc(MAXSIZE*sizeof(ElemType));
	if(!L->elem)
	{
		printf("创建顺序表失败");
	}	
	L->length=0;
} 

//2.在顺序表中插入元素
void ListInsert(SqList *L,int i,ElemType e)
{
	int k;
	if(L->length==MAXSIZE)	printf("线性表已满");	//线性表已满返回0 
	if(i<1||i>L->length+1)	printf("插入位置错误");	//插入位置不在范围内
	if(i<=L->length)								//如果插入的元素不是在表尾 
	{
		for (k=L->length-1;k>=i+1;k--)
		{
			L->elem[k+1]=L->elem[k];		//把元素都往后面挪一个 
		}	
	} 
	L->elem[i-1]=e;							//插入元素 
	L->length++;							//长度+1 
}

//3.在顺序表中删除元素
void ListDelete(SqList *L,int i)
{
	int k;
	if(L->length==0)	printf("线性表为空");	//线性表为空 
	if(i>L->length||i<1)	printf("删除元素的位置错误");
	if(i<L->length)
	{
		for (k=i;k<L->length;k++)
		{
			L->elem[k-1]=L->elem[k];
		}
	}
	L->length-=1;
}

//4.在顺序表中获取某个位置的元素 
int GetElem(SqList *L,int i)
{
	if (i<1||i>L->length)	printf("位置提供错误");
	return L->elem[i-1];
}

//5.读取顺序表中所有元素
void OutPut(SqList *L)
{
	if (L->length==0)	printf("顺序表为空");
	for (int i=0;i<L->length;i++)
	{
		printf("%d ",L->elem[i]);	
	}	
} 
//主函数部分
int main()
{
    SqList L;int num;
    InitList(&L);
    OutPut(&L);
    printf("\n插入元素后:");
    ListInsert(&L,1,9);
    ListInsert(&L,2,7);
    ListInsert(&L,3,2);
    OutPut(&L);
    printf("\n删除元素后:");
    ListDelete(&L,1);
    OutPut(&L);
    printf("\n取出的第二个元素:");
	num=GetElem(&L,2);
    printf("%d",num);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张钰枫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值