C语言:实现线性表基本表示(数组元素的删除,插入,合并)
来源:互联网 发布:朱婷 大冠军杯 知乎 编辑:程序博客网 时间:2024/05/16 17:15
任务代码:
在指定位置删除值的操作:
#include <stdio.h>#define SIZE 10int deleteData(int array[],int len,int locate);//定义删除的数组,长度,删除数据的位置int main(){ int locate,i; int n=10;//数组中实际有用的元素 int d[SIZE]={0,1,2,3,4,5,6,7,8,9}; printf("请输入你需要删除第几个数据:"); scanf("%d",&locate); //删除locate处的数据 n=deleteData(d, n, locate);//d数组名作为实际参数传递 //重新打出数组 printf("删除数据后的数组为:\n"); for(i=0;i<n;i++)//这里的n已经改变 { printf("%d ",d[i]); } printf("\n"); return 0;}int deleteData(int array[],int len,int locate){ int i; for(i=locate;i<len-1;i++)//尤其注意,因为删除一个数据后,长度变短了一位所以len-1 { array[i]=array[i+1]; } //删除数据后数组大小缩减 len--; return len;}
在指定位置插入值的操作:
#include <stdio.h>#define SIZE 10int insertData(int array[],int len,int locate,int val);//定义的数组,长度,插入数据的位置,插入的数据int main(){ int locate,val,i; int n=10;//数组中实际有用的元素 int d[SIZE]={0,1,2,3,4,5,6,7,8,9}; printf("请输入你需要插入的位置:"); scanf("%d",&locate); printf("请输入你需要插入的数据:"); scanf("%d",&val); //插入locate处的数据val n=insertData(d, n, locate,val);//d数组名作为实际参数传递,返回新数组的长度 //重新打出数组 printf("删除数据后的数组为:\n"); for(i=0;i<n;i++)//这里的n已经改变 { printf("%d ",d[i]); } printf("\n"); return 0;}int insertData(int array[],int len,int locate,int val){ int i=len;//将i指定到数组的最后一个单元的后一位 //从最后一个数开始,所有的数字统统向后移一个单位,直到loc位置结束(在指定位置留出一个空位) while(i>locate) { array[i]=array[i-1]; i--; } //i=locate处插入数据 array[i]=val;//也可以写为array[locate]=val //插入数据后数组大小增加 len++; return len;}
合并两个有序数组:
#include <stdio.h>#define SIZE 100/* 功能:将长度为l1的有序数组a1和长度为l2的有序数组a2合并成新的有序数组a3 入口参数:待合并的有序数组名及长度,及合并后保存的数组名 返回值:合并后的有序数组长度 */int mergeData(int a1[],int l1,int a2[],int l2,int a3[]){ int i=0,j=0,len=0;//i代表数组a1中的元素,j代表数组a2中的元素,len代表新数组的长度 while(i<l1 && j<l2)//当比较没有到达两个数组的末尾结束的时候 { if(a1[i]<a2[j]) { a3[len++]=a1[i++];//先赋值再++ } else { a3[len++]=a2[j++];//先赋值再++ } } //如果a1或者a2先执行完,那a3的剩余元素为没有比较完的数组余下元素 while(i<l1) { a3[len++]=a1[i++]; } while(j<l2) { a3[len++]=a2[j++]; } return len;}//冒泡排序奖无序数列先有序化void bubbleSort(int d[],int n){ int i,j,t; for(i=0;i<n-1;i++) { for(j=0;j<n-i-1;j++) { if(d[j+1]<d[j]) { t=d[j]; d[j]=d[j+1]; d[j+1]=t; } } }}int main (){ int n1=10,n2=8,n3=0;//数组中实际有用的元素 int d1[SIZE]={3,2,4,5,3,9,7,8,1,0}; int d2[SIZE]={43,23,45,65,12,76,89,32}; int d3[SIZE]={SIZE*2};//合并后的数组元素个数翻倍 int i; //先有序化 bubbleSort(d1,n1); bubbleSort(d2,n2); //合并有序数组 n3=mergeData(d1, n1, d2, n2, d3);//数组名作为实际参数传入 //输出合并后的结果 printf("合并后的数组为:"); for(i=0;i<n3;i++) { printf("%d ",d3[i]); } printf("\n"); return 0;}
执行情况:
第一题:
第二题:
第三题:
知识总结:
指定位置删除值:
指定位置上插入数据:
合并两个有序数组:
阅读全文
0 0
- C语言:实现线性表基本表示(数组元素的删除,插入,合并)
- C语言实现顺序线性表的表示、插入、删除
- C语言实现线性表的插入和删除操作
- 线性表的顺序表示和实现基本操作之插入元素
- 【数据结构】线性表的顺序表示和实现,实现插入和删除算法,并且实现顺序表的合并
- C语言:线性顺序结构(数组)的插入,删除
- 实现线性表的遍历查询插入删除合并
- 【数据结构】顺序线性表的插入、删除、合并实现
- 线性表c语言实现----初始化插入删除
- 线性表的插入,删除,合并,查找
- C语言单向动态链表程序,实现链表的建立,合并,重新排序,链表元素的插入与删除,以及根据元素成员的值进行元素删除。
- 数组表示的线性表(顺序表)的基本操作,以及合并两个非递减数组线性表
- 单链线性表的创建,元素的插入删除以及合并
- c语言实现线性表的建立,初始化,插入,删除,查找,遍历以及时间复杂度分析
- 1.线性表创建、元素插入、元素删除、线性表合并(原创)
- 线性表的顺序表示(C语言实现)
- 线性表的顺序表示和实现(C语言描述)
- 线性表的顺序表示及实现(C语言编写)
- android Handler学习笔记
- OPENCV入门之启动摄像头《分水岭算法》
- HDOJ 5543 Pick The Sticks (简单DP)
- Discuz!教程之如果修改或删除回复别人的回帖的时候显示的引用信息
- C++ ofstream和ifstream详细用法
- C语言:实现线性表基本表示(数组元素的删除,插入,合并)
- C++ CFileFind() 查找当前路径下所有文件夹名称
- UGUI检测鼠标进入退出
- 一文带你了解Linux平均负载之谜
- C语言中宏的使用
- 【DL--16】深度学习架构清单
- /etc/fstab 参数详解及如何设置开机自动挂载
- 剑指offer60 层序打印二叉树
- Qt——开始