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

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

数据结构专栏:数据结构_脑子不好的小菜鸟的博客-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

相关文章

Jmeter如何向数据库批量插入数据

《Jmeter如何向数据库批量插入数据》:本文主要介绍Jmeter如何向数据库批量插入数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Jmeter向数据库批量插入数据Jmeter向mysql数据库中插入数据的入门操作接下来做一下各个元件的配置总结Jmete

使用Apache POI在Java中实现Excel单元格的合并

《使用ApachePOI在Java中实现Excel单元格的合并》在日常工作中,Excel是一个不可或缺的工具,尤其是在处理大量数据时,本文将介绍如何使用ApachePOI库在Java中实现Excel... 目录工具类介绍工具类代码调用示例依赖配置总结在日常工作中,Excel 是一个不可或缺的工http://

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Python自动化办公之合并多个Excel

《Python自动化办公之合并多个Excel》在日常的办公自动化工作中,尤其是处理大量数据时,合并多个Excel表格是一个常见且繁琐的任务,下面小编就来为大家介绍一下如何使用Python轻松实现合... 目录为什么选择 python 自动化目标使用 Python 合并多个 Excel 文件安装所需库示例代码

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要