在创建顺序表的时候出现的问题

调试的才能发现问题出现在哪里

#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

在创建顺序表的时候出现的问题的相关文章

如何创建顺序表以及对标的一些操作

# include <stdio.h># include<string.h># include<memory.h># include<assert.h># define MAX_SIZE 100typedef int DataType;typedef struct SeqList{ DataType arry[MAX_SIZE]; size_t size;}SeqList;//定义一个结构体顺序表void InitSeqList(SeqList * pSeq

创建顺序表并实现各种操作(C语言)

#include<stdio.h> #include<stdlib.h> #define MAXSIZE 100 struct List { int element[MAXSIZE]; //链表中最大节点数 int len; //当前链表的长度 }*t; void print(List *t); int Isemtty(List *t) //判断链表是否为空 { if(t->len==0) return 0; else return -1; } void getElement

顺序表

#include <cstdio> #include <cstring> ///都用c语言写的 #include <iostream> ///建议从主函数开始看 #include <cstdlib> using namespace std; int sequence_map[1000]; int total_sequence = 0; void init_sequence() ///主界面. ///一级菜单中顺序表的操作界面 init初始化 { printf

JAVA实现具有迭代器的线性表(顺序表)

1,先了解下JAVA类库中的迭代器:JAVA提供了两种基本类型的迭代器,分别用两个接口来表示:Iterator<T>,ListIterator<T>.其中,Iterator<T>接口中只定义了三个方法:hasNext().iterator().next(),而ListIterator<T>中,除了拥有前面所述的三种方法外,而另外拥有hasPrevious().previous().remove().set()等其他方法(具体参考JDK文档). 这说明:实现了

使用JAVA数组实现顺序表

1,引入了JAVA泛型类,因此定义了一个Object[] 类型的数组,从而可以保存各种不同类型的对象. 2,默认构造方法创建了一个默认大小为16的Object数组:带参数的构造方法创建一个指定长度的Object数组 3,实现的顺序表的基本操作有:返回表的长度.获取指定索引处的元素(注意是索引,而不是位置.索引以下标0开始,位置以下标1开始).按值查找数据元素的位置.直接插入元素(顺序表尾部).向指定位置插入元素.直接删除元素(在顺序表尾部).删除指定索引处元素.判断表是否为空.清空表. 1 im

java数据结构与算法之顺序表与链表深入分析

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 ??数据结构与算法这门学科虽然在大学期间就已学习过了,但是到现在确实也忘了不少,因此最近又重新看了本书-<数据结构与算法分析>加上之前看的<java数据结构>也算是对数据结构的进一步深入学习了,于是也就打算

顺序表的功能实现

顺序表的创建,插入,删除,清空,销毁,查找,输出功能 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #defineTRUE 1 #defineFALSE 0 #defineOK 1 #defineERROR 0 #defineINFEASIBLE -1 #defineOVERFLOW -2 typedefint Status ; typedefint ElemType ; //线性表的动态分配顺序存储结构

顺序表 其他操作

1 实验2 顺序表其它操作 2 实验目的 3 1.进一步掌握在线性表的顺序存储结构上的一些其它操作. 4 实验内容 5 程序1 6 已知一个线性表,用另辟空间和利用原表两种方法把线性表逆置. 7 设计要求:在程序中构造三个子程序分别为 8 SeqList reverse(SeqList A) /*顺序表的就地逆置 */ 9 void ListTraverse(SeqList L) /* 遍历顺序表 */ 10 SeqList create(int n) /* 建立顺序表 */ 11 12 程序2

顺序表实验2

<数据结构> 实验报告 题目:_顺序表的实现 学号:___________ 姓名:___________ 东南大学计算机系 实验题目 一.    实验目的 1.    掌握顺序表的基本操作,实现顺序表的插入.删除.查找等基本运算. 二.    实验内容 1.                       完善顺序表的定义,并运用其实现线性表的操作. 2.                       (课上任务) 选题一:集合的交.并.差运算 [问题描述]         编制一个能演示执行集合的