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

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

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

相关文章

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

JAVA利用顺序表实现“杨辉三角”的思路及代码示例

《JAVA利用顺序表实现“杨辉三角”的思路及代码示例》杨辉三角形是中国古代数学的杰出研究成果之一,是我国北宋数学家贾宪于1050年首先发现并使用的,:本文主要介绍JAVA利用顺序表实现杨辉三角的思... 目录一:“杨辉三角”题目链接二:题解代码:三:题解思路:总结一:“杨辉三角”题目链接题目链接:点击这里

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

在C#中合并和解析相对路径方式

《在C#中合并和解析相对路径方式》Path类提供了几个用于操作文件路径的静态方法,其中包括Combine方法和GetFullPath方法,Combine方法将两个路径合并在一起,但不会解析包含相对元素... 目录C#合并和解析相对路径System.IO.Path类幸运的是总结C#合并和解析相对路径对于 C

Python按条件批量删除TXT文件行工具

《Python按条件批量删除TXT文件行工具》这篇文章主要为大家详细介绍了Python如何实现按条件批量删除TXT文件中行的工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.简介2.运行效果3.相关源码1.简介一个由python编写android的可根据TXT文件按条件批

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*