在顺序表中插入一个元素

之前在创建了一个顺序表的功能函数,这个没有疑问,测试没有错误,但是在接下来的做插入功能的时候发现插入的时候用模块写,不调用这个创建的函数,很难做到这个。该怎么实现这个“高内聚,低耦合”的原则。

#include <stdlib.h>
#include "Orderfist.h"

status InsertList_Sq(
	SqList L[]
	)				/* 在链表插入一个元素 */

{
	UINT32 Insert_position = 0U, Insert_data = 0U, u32i = 0U, u32length = 0U, u32temp = 0U;		/* 定义一个无符号的位置插入变量,数据变量,和循环体变量 */
	INT32 i32OSM = 1;
	i32OSM = OSM_Printf("请输入要插入的位置(非负数):");			/* 提示要输入的地方 */
	Insert_position = scanf_for();				/* 输入要插入的位置 */

	if ( ((u32length - 1U) < Insert_position ) && ( 0U > Insert_position))  /* 如果输入了非法数据,进行处理 */
	{
		i32OSM = OSM_Printf("你输入的位置有误!\n");
	}
	i32OSM = OSM_Printf("请输入要插入的数据:\n");			/* 提示要输入数据 */
	Insert_data = scanf_for();								/* 输入要插入的数据 */	

	if ( Insert_position == u32i)							/* 找到插入的位置之后进行移位的处理 */
	{
		L[Insert_position].elem = L[u32i].elem;
	}

	for ( u32i = Insert_position + 1U; u32i < (L->u32length + 1U); u32i++)			/* 插入的位置之后的数据进行处理 */
	{
		u32temp = *L[u32i].elem;
		*L[u32i].elem = *L[u32i +1U].elem;
		*L[u32i +1U].elem = u32temp;
	}

	for ( u32i = 0U; u32i < u32length; u32i ++)
	{
		if ( 0U != L[u32i].u32length)
		{
			i32OSM = OSM_Printf (" %d  -> ", L[u32i].u32length);											/* 全部打印出来 */
		}
	}

	return 0U;

}

这个中有很多是执行不到的语句 怎么办呢?可能主函数中调用的时候传参没有传好。还有就是这个里面每次总是出现输入错误。主函数在调用创建的函数之后,结构体L中的值会不会改变呢?

时间: 2024-09-30 15:13:22

在顺序表中插入一个元素的相关文章

在有顺序的数列中插入一个元素后该数列仍然是有顺序的数组

/** 在有顺序的数组中插入一个元素后该数列仍然是有顺序的数组: 思路:先找到该元素的插入位置 插入数据时要先将数组中得元素后移,然后插入该元素 */ #include <stdio.h> #define  n 10 int main() { // 在有顺序的数列中插入一个元素后该数列仍然是有顺序的数列: int a[n] = {-1, 3, 6, 9, 13, 22, 27, 32, 49}; int insertVal; int insertLoc; scanf("%d"

设顺序表中的数据元素递增有序,试着写一算法,将x插入到顺序表上的适当位置上,以保持该表的有序性。

转自: https://blog.csdn.net/cckevincyh/article/details/45605261 设顺序表va中的数据元素递增有序.试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性 先建立一个待插入的结点,然后依次与与链表中的各结点的数据域比较大小,找到插入该结点的位置,最后插入该结点. 算法如下: #include<stdio.h> #include<stdlib.h> #define MAXSIZE 20 #define OK 1 #def

往一个已知数组中插入一个元素

package ch07; import java.util.Arrays; /** * Created by liwenj on 2017/7/19. */public class test2 { public static void main(String[] args) { char[] a = new char[]{'b', 'c', 'e', 'f', 'g'};// Arrays.sort(a);// System.out.println(a);u char d = 'd'; cha

在已知线性表中插入/删除元素的代码

#include "sqlist_h.h" void main(){ SqList L; int n; int e; InitList_Sq(L); cout<<"请输入初始建立线性表的长度n(<=100):"; //printf("请输入初始建立线性表的长度n(<=100):"); cin>>n; //scanf(&n); for(int i=1;i<=n;i++) { cin>>L

31.向数组中插入一个元素

import java.util.*; public class Insert { public static void main(String[] args) { int[] list = new int[6]; // 长度为为6的数组 list[0] = 99; list[1] = 85; list[2] = 82; list[3] = 63; list[4] = 60; int index = list.length; // 保存新增成绩插入位置 System.out.println("请

顺序表 初始化 插入 删除 查找 合并 交换 判断为空 求长度

#include <stdio.h> #include <stdlib.h> #define OK 1 #define TRUE 1 #define ERROR -1 #define FALSE -1 #define OVERFLOW -2 #define ElemType int #define Status int typedef int ElemType typedef int Status #define LEN sizeof(SqList) #define MLC (Li

顺序表添加与删除元素以及 php实现顺序表实例

对顺序表的操作,添加与删除元素. 增加元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  添加一个元素 111 ,有三种方式: a)尾部端插入元素,时间复杂度O(1);    保证了原始顺序列表的顺序. b)非保序的加入元素(不常见),时间复杂度O(1);   打乱了原始顺序列表的顺序. c)保需的元素插入,时间复杂度O(n);    保证了原始顺序列表的顺序. 删除元素 如下图所示  对顺序列表 Li [1328,693,2529,254]  删除元素 ,有三种方式

SQL 在表中插入

SQL INSERT INTO 语句(在表中插入) INSERT INTO 语句用于向表中插入新记录. SQL INSERT INTO 语句 INSERT INTO 语句用于向表中插入新记录. SQL INSERT INTO 语法 INSERT INTO 语句可以用两种形式编写. 第一个表单没有指定要插入数据的列的名称,只提供要插入的值: INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2,

线性表&gt;&gt;顺序表---&gt;逆置所有元素

1 /*顺序表中所有的元素逆置 2 * 3 */ 4 #include <iostream.h> 5 using namespace std; 6 7 int main(){ 8 void reverse_arr(int arr[],int n); 9 int a[]={0,1,2,3,4,5,6,7}; 10 int n=7; 11 reverse_arr(a,n); 12 for(int i=0;i<=n;i++){ 13 cout << a[i] << &q