码迷,mamicode.com
首页 > 其他好文 > 详细

在顺序表中插入一个元素

时间:2014-12-14 15:53:41      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:c语言   单链表   插入排序   

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

#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中的值会不会改变呢?

在顺序表中插入一个元素

标签:c语言   单链表   插入排序   

原文地址:http://blog.csdn.net/u011046042/article/details/41924755

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!