期末考试必备----数据结构----顺序表(初始化,插入,删除,合并)

本文主要是介绍期末考试必备----数据结构----顺序表(初始化,插入,删除,合并),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

				/*顺序表的基本操作*//*插入,删除*/
#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;
}void mysort(qlist& L)
{//指针写法int* p, *q, temp;for (p = L.elem;  p < L.elem + L.len - 1;  p++){for (q = p + 1; q < L.elem + L.len; q++){if (*p > *q){temp = *p;*p = *q;*q = temp;}}}printf("排序好的顺序表为:\n");
}void mycombine(qlist L, qlist L1, qlist& L2)
{//下标写法int len = 0;int i = 0, j = 0, k;while (i < L.len && j < L1.len){while (i < L.len && L.elem[i] <= L1.elem[j]){L2.elem[len++] = L.elem[i];if (L.elem[i] == L1.elem[j])j++;i++;}if (i < L.len){while (j < L1.len && L1.elem[j] <= L.elem[i]){L2.elem[len++] = L1.elem[j];if (L.elem[i] == L1.elem[j])i++;j++;}}}if (i < L.len){for (i; i < L.len; i++)L2.elem[len++] = L.elem[i];}else{for (j; j < L1.len; j++)L2.elem[len++] = L1.elem[j];}L2.len = len;
}int main()
{qlist L;initlist(L);input(L);//output(L);//insert(L);//插入元素//output(L);//dele(L);//删除元素//output(L);/*排序,合并*/mysort(L);output(L);qlist L1;initlist(L1);input(L1);mysort(L1);output(L1);qlist L2;initlist(L2);//合并两个数组L1,L2mycombine(L, L1, L2);output(L2);return 0;
}

这篇关于期末考试必备----数据结构----顺序表(初始化,插入,删除,合并)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/871590

相关文章

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除