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