前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据结构基本操作(期末必备)(顺序表)

数据结构基本操作(期末必备)(顺序表)

作者头像
用户11039529
发布2024-03-25 15:37:22
810
发布2024-03-25 15:37:22
举报
文章被收录于专栏:算法学习日常算法学习日常

所属专栏:数据结构_脑子不好的小菜鸟的博客-CSDN博客

记得关注我哦,我大部分为算法题题解,有时候涉及算法知识点纯讲解:脑子不好的小菜鸟-CSDN博客

数据结构持续更新哦~

今天老师布置的作业,闲来无事,一次性写完,没有参考书,感觉状态良好,因此熬夜顺便发布该文章,嘻嘻~

代码语言:javascript
复制
								/*数据结构练习*/
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>//动态申请,sizeof

//顺序表的基本操作

#define ok 1
#define error 0
#define overflow -2//溢出
#define initsize 50//初始数组长度
#define addsize 20//每次追加的长度

typedef int status;//返回状态
typedef int elemtype;//数据类型

typedef struct list
{
	elemtype* elem;//数组首元素递增
	int len;//数组元素个数
	int listsize;//开辟的数组长度
}qlist;

status initlist(qlist& L)
{
	elemtype* p = (elemtype*)malloc(sizeof(elemtype) * initsize);
	if (p == NULL)
	{
		printf("空间申请失败!\n");
		exit(overflow);
	}

	L.elem = p;
	L.listsize = initsize;
	L.len = 0;
	return ok;
}

status input(qlist& L)
{
	printf("请输入顺序表的元素个数\n");
	int n;
	scanf("%d", &n);

	L.len = n;
	int i;

	printf("请输入顺序表中%d个元素:\n", n);
	//法一:普通写法
	//for (i = 0; i < L.len/**/; i++)
	//	scanf("%d", L.elem + i);/*把平时的数组名更改为L.elem*/

	//法二:指针写法
	int* p = L.elem;
	for (p; p < L.elem + L.len/**/; p++)
		scanf("%d", p);/**/

	return ok;
}

status output(qlist L)//不改变L,不传引用
{
	printf("打印顺序表元素:\n");
	int i;

	//法一:普通写法
	//for (i = 0; i < L.len; i++)
	//	printf("%d ", L.elem[i]);
	//printf("\n");

	//法二:指针写法
	int* p = L.elem;
	for (p; p < L.elem + L.len/**/; p++)
		printf("%d ", *p);/**/
	printf("\n");

	return ok;
}

status insert(qlist& L)
{
	printf("请输入你要插入的位置:\n");

	int n;
	scanf("%d", &n);

	if (n < 1 || n > L.len)
	{
		printf("插入位置错误!\n");
		return error;
	}

	int i;
	for (i = L.len - 1; i >= n - 1; i--)//插入:从后向前
		L.elem[i + 1] = L.elem[i];

	printf("请输入你要插入的数据!\n");
	int m;
	scanf("%d", &m);
	L.len++;/**/
	L.elem[n - 1] = m;
	printf("插入成功!\n");

	return ok;
}

status dele(qlist& L)
{
	printf("请输入要删除的位置!\n");
	int n;
	scanf("%d", &n);

	if (n < 1 || n > L.len)
	{
		printf("位置错误,删除失败!\n");
		exit(overflow);
	}

	int i;
	for (i = n - 1; i < L.len - 1; i++)
		L.elem[i] = L.elem[i + 1];

	L.len--;/**/
	printf("删除成功!\n");
	return ok;
}

int main()
{
	qlist L;
	initlist(L);
	input(L);
	output(L);
	insert(L);//插入元素
	output(L);

	dele(L);//删除元素
	output(L);

	return 0;
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档