首页 > 教育资讯 > 正文

数据结构中的顺序表插入操作中if(i<1 || i>L->len+1)中 L-什么意思?还是L->是一个整体呢?部分代码如下:

2025-04-28 06:55:32 | 云学教育

云学教育小编给大家带来了数据结构中的顺序表插入操作中if(i<1 || i>L->len+1)中 L-什么意思?还是L->是一个整体呢?部分代码如下:相关文章,一起来看一下吧。

本文目录一览:

数据结构中的顺序表插入操作中if(i<1 || i>L->len+1)中 L-什么意思?还是L->是一个整体呢?部分代码如下:

删除顺序表中的第i个元素,,给个完整的 C语言代码吧~~~ 谢谢

#include < stdio.h >

#define MAXSIZE 100

typedef struct{

int elem[MAXSIZE];

int last;

} SeqList;

void deletelist(SeqList *l,int i,int k);

int main(){

int i,k,j=0;

SeqList *l;

SeqList a;

l=&a;

scanf("%d%d",&i,&k);//输入i和k

while(scanf("%d",&l->elem[j])!=EOF)

j++;//输入顺序表内容

l->last=j-1;

deletelist(l,i,k);

return 0;

}

扩展资料

顺序表插入元素

向已有顺序表中插入数据元素,根据插入位置的不同,可分为以下 3 种情况:

1、插入到顺序表的 表头 ;

2、在表的中间位置插入元素;

3、尾随顺序表中已有元素,作为顺序表中的最后一个元素;将要插入位置元素以及后续的元素整体向后移动一个位置;将元素放到腾出来的位置上。

注意,动态数组额外申请更多物理空间使用的是 realloc 函数。并且,在实现后续元素整体后移的过程,目标位置其实是有数据的,还是 3,只是下一步新插入元素时会把旧元素直接覆盖。

数据结构中的顺序表插入操作中if(i<1 || i>L->len+1)中 L-什么意思?还是L->是一个整体呢?部分代码如下:云学教育

数据结构(C++版) 顺序表的保序插入操作,要求在下面的问题补充。急求源代码啊,用类定义的。

#include <iostream.h>
#include "Arithmetic.h"
#include <malloc.h>
/***********************************************************************
类名称 : CLineArray
功能 : 顺序存储下的线性表
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
class CLineArray
{
public:

CLineArray();
virtual ~CLineArray();
// 1.初使化线性表
bool Init(const int iSize = 10);
// 2.清空线性表
void Clear();
// 3.得到线性表的长度
int GetLenth()
{
return m_iSize;
}
// 4.检查线性表是否为空
bool IsEmpty()
{
return m_iSize == 0;
}
// 5.得到线性表中指定序号为pos的元素
bool GetElement(const int pos, Type& element);
// 6.遍历一个线性表
void Traverse();
// 7.查找指定元素出现的第一个位置
int FindElement(const Type& element);
// 8.更新线性表中的元素
bool Update(const Type& element, int iPos = 0);
// 9.向线性表中按指定条件插入一个元素
bool Insert(const Type& element, int iPos = -1);
// 10.从线性表中删除指定元素
bool Delete(Type& element, int iPos = -1);
// 11.对线性表排序
void Sort();
Type *m_pLineArray; // 存放线性表内容的指针
int m_iSize; // 线性表的实际长度
int m_iMaxSize; // 当前线性表的最大长度
bool m_bSort; // 为真时,是按顺序排列的,假时则没有排序
};

#include "LineArray.h"

template <class Type>
CLineArray<Type>::CLineArray():
m_pLineArray(NULL),
m_iSize(0),
m_iMaxSize(0)
{

}
template <class Type>
CLineArray<Type>::~CLineArray()
{
if (m_pLineArray != NULL)
{
delete []m_pLineArray;
m_pLineArray = NULL;
m_iMaxSize = 0;
m_iSize = 0;
}
}
/***********************************************************************
函数名 : Init
功能 : 初使化线性表
参数 : [IN] int iSize --- 线性表的最大长度,默认为10
返回值 : true初使化成功,false初使化失败
------------------------------------------------------------------------
备注 : 用户设置线性表的最大长度是为了加快添加数量大于线性表最大长度时重新分配空间时所占用的时间
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
bool CLineArray<Type>::Init(const int iSize)
{
// 如果用户第二次调用初使化则,查看以前是否分配过空间
// 如果分配过并且和这次分配的空间大小不一样则释放原来空间重新分配
if (m_pLineArray != NULL && m_iMaxSize != iSize)
{
delete []m_pLineArray;
m_pLineArray = NULL;
}
// 如果没有分配空间则分配m_iMaxSize大的空间
m_iMaxSize = iSize;
if (m_pLineArray == NULL)
{
m_pLineArray = new Type[m_iMaxSize];
// 分配空间失败,报错并返回错误
if (m_pLineArray == NULL)
{
cout<<"动态分配的存储空间出错!"<<endl;
return false;
}
}
m_iSize = 0;
return true;
}
/***********************************************************************
函数名 : Clear
功能 : 清空线性表
返回值 : 无
------------------------------------------------------------------------
备注 :
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
void CLineArray<Type>::Clear()
{
if (m_pLineArray != NULL)
{
delete []m_pLineArray;
m_pLineArray = NULL;
}
m_iMaxSize = 0;
m_iSize = 0;
}
/***********************************************************************
函数名 : GetElement
功能 : 得到线性表中指定序号为pos的元素
参数 : [IN] const int pos --- 要得到元素的位置
参数 : [OUT] Type& element --- 要得到的元素,通过引用返回
返回值 : true成功找到指定元素,false指定位置不在线性表的范围内,失败
------------------------------------------------------------------------
备注 :
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
bool CLineArray<Type>::GetElement(const int pos, Type& element)
{
if (pos<1 || pos >m_iSize)
{
return false;
}
element = m_pLineArray[pos-1];
return true;
}
/***********************************************************************
函数名 : Traverse
功能 : 遍历一个线性表
返回值 :
------------------------------------------------------------------------
备注 : 当Type类型是用户自己定义的类或结构体时,注意
在用户没有重载<<这个运算符的情况下,输出会出错
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
void CLineArray<Type>::Traverse()
{
for (int i=0; i<m_iSize; i++)
{
cout<<m_pLineArray[i]<<" ";
}
cout<<endl;
}
/***********************************************************************
函数名 : FindElement
功能 : 查找指定元素出现的第一个位置
参数 : [IN] const Type& element --- 要查找的元素
返回值 : 0没有查找到,否则返回元素所在位置(从1开始)
------------------------------------------------------------------------
备注 :
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
int CLineArray<Type>::FindElement(const Type& element)
{
int iPos = -1;
if (m_bSort)
{
// 如果为有序数组,用二分查找法查找
iPos = CArithmetic::BinarySearch(m_pLineArray, m_iSize, element);
}
else
{
iPos = CArithmetic::SequentialSearch(m_pLineArray, m_iSize, element);
}

iPos++;
return iPos;
}
/***********************************************************************
函数名 : Update
功能 : 更新线性表中的一个元素
参数 : [IN] const Type& element --- 更新后的元素的值
参数 : [IN] int iPos --- 要更新元素所在的位置,默认为0意思是更新第一个等于element的元素
返回值 : true更新成功,false更新失败
------------------------------------------------------------------------
备注 :
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
bool CLineArray<Type>::Update(const Type& element, int iPos)
{
bool bRet = false;

if (0 == iPos)
{
int iTemp = -1;
iTemp = FindElement(element);
// 因为查到的元素从1开始计数,所以用在数组中要减1
iTemp--;
if (iTemp>-1 && iTemp<m_iSize)
{
m_pLineArray[iTemp] = element;
bRet = true;
}
}
else if (iPos>0 && iPos<=m_iSize)
{
// 通过序号更新线性表中的元素
m_pLineArray[iPos-1] = element;
// 这种更新不确定线性表是否还是有序的,所以设为无序表
m_bSort = false;
bRet = true;
}
return bRet;
}
/***********************************************************************
函数名 : Insert
功能 : 向线性表中按指定条件插入一个元素
参数 : [IN] const Type& element --- 添加的元素
参数 : [IN] int iPos --- 元素所在的位置,为0是在顺序表中插入元素,
并使表还为有序表;默认-1是在表最后插入一个元素
返回值 : true插入成功,false插入失败
------------------------------------------------------------------------
备注 :
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
bool CLineArray<Type>::Insert(const Type& element, int iPos)
{
if (iPos<-1 || iPos>=m_iSize+2)
{
// 超出范围
return false;
}

if (0 == iPos)
{
//插入有序表
int iTemp = -1;
if (!m_bSort)
{
// 如果为无序数组,先排序
Sort();
}

for (int i=0; i<m_iSize; i++)
{
if (element < m_pLineArray[i])
{
break;
}
}
iPos = i+1;
}
else if (-1 == iPos)
{
// 在最后一个地方插入
iPos = m_iSize + 1;
m_bSort = false;
}
else
{
// 指定插入位置时不确定表还为有序表
m_bSort = false;
}

if (m_iSize == m_iMaxSize)
{
// 原来分配的空件使用完了,扩大原来的空间
int iUnit = sizeof(Type);
m_pLineArray = (Type *)realloc(m_pLineArray, m_iMaxSize*2*iUnit);
if (NULL == m_pLineArray)
{
cout<<"动态分配的存储空间出错!"<<endl;
return false;
}
m_iMaxSize *= 2;
}
for (int i=m_iSize; i>=iPos; i--)
{
m_pLineArray[i] = m_pLineArray[i-1];
}
m_pLineArray[iPos-1] = element;
m_iSize++;
return true;
}
/***********************************************************************
函数名 : Delete
功能 : 从线性表中删除指定元素
参数 : [IN] Type& element --- 删除的元素(如果是序号删除则返回要删除的元素)
参数 : [IN] int iPos --- 元素所在的位置,为0是删除element元素,
默认-1是删除最后一个元素
返回值 : true插入成功,false插入失败
------------------------------------------------------------------------
备注 :
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
bool CLineArray<Type>::Delete(Type& element, int iPos)
{
if (iPos<-1 || iPos>m_iSize)
{
// 超出范围
return false;
}

if (0 == iPos)
{
// 查找要删除的元素element所在的位置
iPos = FindElement(element);
if (iPos < 1)
{
// 未查到element
return false;
}
}
else if (-1 == iPos)
{
// 删除最后一个
iPos = m_iSize;
}
element = m_pLineArray[iPos-1];

for (int i=iPos; i<m_iSize; i++)
{
m_pLineArray[i-1] = m_pLineArray[i];
}
m_iSize--;
if ((float)m_iSize/m_iMaxSize<0.4 && 10 > m_iMaxSize)
{
// 占用空间太多浪费,回收一些
int iUnit = sizeof(Type);
m_pLineArray = (Type *)realloc(m_pLineArray, m_iMaxSize/2*iUnit);

if (NULL == m_pLineArray)
{
cout<<"动态分配的存储空间出错!"<<endl;
return false;
}

m_iMaxSize /= 2;
}

return true;
}
/***********************************************************************
函数名 : Sort
功能 : 对线性表排序
返回值 :
------------------------------------------------------------------------
备注 :
------------------------------------------------------------------------
作者 :
***********************************************************************/
template <class Type>
void CLineArray<Type>::Sort()
{
// 如果线性表的无序表才再行排序
if (!m_bSort)
{
// 直接插入排序法
CArithmetic::StraightInsertionSorting(m_pLineArray, m_iSize);
}
m_bSort = true;
}

数据结构中的顺序表插入操作中if(i<1 || i>L->len+1)中 L-什么意思?还是L->是一个整体呢?部分代码如下:

L是一个 链表 ,在链表的 宏定义 typedef中,定义了很多链表的属性,比如说长度len,数据data,或者其他属性,而->的作用在C语言中就是代表某变量的某种属性

比如L->len+1就是取得链表L的长度属性,并且加1.

以上就是云学教育小编给大家带来的数据结构中的顺序表插入操作中if(i<1 || i>L->len+1)中 L-什么意思?还是L->是一个整体呢?部分代码如下:,希望能对大家有所帮助。更多相关文章关注云学教育:www.yunxue.com

免责声明:文章内容来自网络,如有侵权请及时联系删除。
与“数据结构中的顺序表插入操作中if(i<1 || i>L->len+1)中 L-什么意思?还是L->是一个整体呢?部分代码如下:”相关推荐
i顺德APP如何查询个人高考成绩
i顺德APP如何查询个人高考成绩

广东顺德高考分数线 顺德区2024年高考分数线根据不同类型的考生和专业有所不同 。 对于顺德区2024年高中阶段学校招生,第二批第一层次学校录取 : 体育、艺术、传媒专业生的录取分数线因学校和专业方向而异。例如,佛山市顺德区郑裕彤中学音乐专业生的投档合成总分为 563.45分 ,佛山市顺德区华侨中学美术专业生的投档合成总分为 604.2分 。 对于勒流高考

2025-12-09 11:03:28
民办本科一类和二类哪个好? i类好还是lll类好?
民办本科一类和二类哪个好? i类好还是lll类好?

民办本科一类和二类哪个好?i类好还是lll类好? 校友会民办本科illlll类相比较i类好。 i类优势: 教学质量不同,民办大学排名一类的教学质量相对于二类三类的更好。教学设施不同,民办大学排名一类的教学设施相对于二类三类的更完善。 民办本科简介: 民办本科是指国家机构以外的社会组织或者个人,利用非国家财政性经费,面向社会依法举办的本科高校或其他教育机构其办学层次是本科。

2025-09-07 20:34:37
江苏高考体检受限代码中26是指什么?
江苏高考体检受限代码中26是指什么?

江苏高考体检受限代码中26是指什么? 第二十六条规定双眼裸眼视力4.8,即公安、武警人员不得申请专业。 江苏高考24、25、26的限制如下: 1.第二十四条双眼裸眼视力要求为5.0,限制为24,即侦查、飞行专业不得上报; 2.第二十五条、第二十六条规定双眼裸眼视力4.8,即公安、武警人员不得申请专业。 只要高考分数足够,就可以考上医科大学,没有任何影响。 考试结论由各市、

2023-10-31 02:39:39
江津播音主持哪家好 重庆市江津区八中艺考美术分数线 江津滨江新城金1中入读条件
江津播音主持哪家好 重庆市江津区八中艺考美术分数线 江津滨江新城金1中入读条件

江津播音主持哪家好 天籁艺术学校。 1、具有合法的办学资质; 2、有专业、资深的播音主持名师指导,学生学习效果与老师自身专业水平及教学方式息息相关。 3、有高规格的硬件设施支撑。具备演播室、录音棚、多媒体教室等专业设备,学生对专业器材使用的熟悉及专业能力提升快。 4、学生有出彩的艺考成绩。 重庆市江津区八中艺考美术分数线 分数线为450分。根据查询重庆市第八中学校官网得知,重庆八中艺

2023-10-31 23:32:24
中国传媒大学1/4招生的艺术考试难过吗?
中国传媒大学1/4招生的艺术考试难过吗?

中国传媒大学1/4招生的艺术考试难过吗? 1.学美术一般需要报一些补习班,费用一般在三千到四千元不等,到考试期间还要到外地参加校考,费用也不会少。 2.你今年高二,因为没有美术基础,起步较晚,想考中传的美术是很难的。 3.至于中国传媒大学1/4招生的艺术考试美术类,可以这样说是非常难考,我以前的同学美术统考考全省第17名,结果还是没有被录取,建议你不要抱有太大希望。它是针对那些美术高手的。

2023-11-25 00:27:24
高考中档案是什么意思
高考中档案是什么意思

高考中档案是什么意思 高考中的档案是指记录考生个人信息及在校期间表现的重要文件 。以下是关于高考档案的详细解释: 一、档案内容 基本信息 :档案中首先包含了考生的基本信息,如 姓名、性别、出生年月、户籍地址 等,这些信息是确认考生身份的基础。 受教育程度 :档案会详细记录考生的受教育经历,包括 就读学校、入学时间、毕业时间 等,以证明考生的学历背景。

2025-11-10 21:24:52
如何用小标题式结构写满分作文
如何用小标题式结构写满分作文

求一篇全篇文章都是7字的高考满分作文 清宣统三年三月二十九日(西元一九一一年四月二十七日),广州起义暴发。起义之军百二十人持枪械攻入广州督府衙门,两广总督张鸣歧闻风而逃。然义军终因寡不敌众,数百清军围之,起义军多战死。旋革命党人潘达微见而怜之,收烈士之骸,止得七十二具,葬于白云山麓之黄花岗。九十七年之后,时值腊月,会天大雪,余滞于广州,遂至黄花岗七十二烈士之陵。止于其门,百感并至,赋诗一首,诗

2023-11-03 03:05:03
高考信息采集中的兼报信息是什么意思
高考信息采集中的兼报信息是什么意思

高考信息采集中的兼报信息是什么意思 高考信息采集中的兼报信息是高考报名时,允许考生文理科兼报体育或艺术类。一个学生是理科兼报体育,那达到相应批次线后,既可填体育类的志愿,也可以填理科类的志愿,填体育类的志愿时就按体育类的计分方式投档录取,填理科类的志愿时,就按理科类的计分方式投档录取。 高考采集信息,都是采集什么 高考采集信息主要包括以下几个方面 : 身份证号码 :这是确认

2025-10-30 00:50:12