调试的才能发现问题出现在哪里
#include <stdlib.h> #include "Orderfist.h" status InsertList_Sq( SqList L[] ) /* 在链表插入一个元素 */ { INT32 i32OSM = 1; UINT32 Insert_position = 0U, Insert_data = 0U, u32i = 0U, u32j =0U; /* 定义一个无符号的位置插入变量,数据变量,和循环体变量 */ i32OSM = OSM_Printf("请输入要插入的位置(非负数)和数据:"); /* 提示要输入的地方 */ Insert_position = scanf_for(); /* 输入要插入的位置 */ Insert_data = scanf_for(); /* 输入插入的数据 */ L->u32length++; /* 插入之后静态表的长度增加了一个 */ for (u32j = L->u32length; u32j > (Insert_position - 1U); u32j--) /* 在插入的那个位置之后进行每个数据向后移动一个使用循环体 */ { (L + u32j)->elem = ((L + u32j) - 1U)->elem; /* 将插入点之后的数据位置都向后移动一个 */ } ((L + Insert_position) - 1U)->elem = Insert_data; /* 将输入的数据赋值给插入位置数据,插入位置之前的都是不变的*/ for ( u32i = 0U; u32i < L->u32length; u32i++) /* 使用循环体将数据进行打印 */ { if ( 0U != (L + u32i)->elem) /* 检测传入参数的有效性 */ { i32OSM = OSM_Printf (" %d ", (L+u32i)->elem); /* 全部打印出来 */ } } return 0U; }
这里的L->u32length++;始终是1也就是没有传值。始终是初始化的时候那样的0。
现在的问题是如何解决将创建函数的L->u32length++ 通过主函数的赋值可以给插入函数
为了追求效率而使用结构指针做为函数参数:当需要保护数据、防止意外改变数据对指针const限定词。传递结构值是处理小型结构最常用的方法。
时间: 2024-12-09 21:07:46