首页 > 教育资讯 > 正文

数据结构中的顺序表插入操作中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.cfsbcg.com

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

2027年高考选科新规定 2027年高考选科新规定主要涉及选科要求的变化和选科模式的调整 。 在选科要求方面,物化捆绑成为趋势,必选物理、化学的专业占比达到较高比例。对于想要报考理工科等相关热门专业的学生来说,需要同时选择物理和化学科目。此外,高校对招生专业的选科要求更加明确,考生需要更早地了解并规划自己的选科组合,以适应未来的专业报考需求。 在选科模式上,采用了“3+1+

2025-03-12 09:46:21
本科二批H段、 I段是什么意思?
本科二批H段、 I段是什么意思?

本科二批H段、I段是什么意思? H段为本科二批文理类及民族班段(含体育艺术类本科二批[三本院校]),I段为本科二批其他类段。 在此次填报志愿的录取段中,实行平行志愿的段为:本科提前批(B段,D段,E段,F段)、本科一批(I段),本科二批(K段),以及体育艺术类本科一批(U段),本科二批(W段)这些段设置9个平行院校志愿,每个院校志愿设置6个专业选项和1个专业调剂选项。 扩展资料:

2024-07-27 08:59:14
对口高考的学生上军校l录取分数线是多少
对口高考的学生上军校l录取分数线是多少

对口高考的学生上军校l录取分数线是多少 需要多少分得看你所在的省份,还有你要考的军校了,不过在很多省份的投档线要相对低10至20分,比如你那里今年的一本线是560分,那很可能军校投档线只要550,主要是还必须体检和政审,这个会淘汰很多人,而且招女生的军校比较少,很多是只招男生的,西安的武警工程学院不错,一本,而且女生招挺多的 202l年河南省高考分数线 2021河南本科一批投档分数线公布

2024-07-11 00:55:42
3+1+2新高考赋分是什么意思
3+1+2新高考赋分是什么意思

2024年甘肃省新高考选科对应专业数及占比 2024年甘肃省普通高校招生专业选考科目要求已经发布,专业选考科目分布情况如下: 专业选考科目要求共有23种组合,其中不提科目要求的专业数量占本科专业总数的43.76%,含物理科目的占比为51.79%,含化学科目的占比为46.46%,含历史科目的占比为1.74%,含“物理+化学”科目的占比为45.98%。 甘肃省新高考采用“3+1+2”方案。

2025-03-12 05:26:50
明年高考3+1+2是什么意思
明年高考3+1+2是什么意思

明年高考3+1+2是什么意思 新高考3+1+2是指:必考3门科目、选修2选1和选修4选2。所谓的“3+1+2”模式,高考的满分依旧是750分,根据不同兴趣的选择共有度种组合。 1.影响等级赋分原则 “政治、地理、化学、生物学4门科目每科原始成绩为100分,转换后赋分成绩满分依然为100分,赋分起点为30分。” 转换时将各科目考生原始成绩从高到低划分为A、B、C、D、E共5

2025-03-05 22:24:40
高考政策3+1+2是什么意思
高考政策3+1+2是什么意思

2024年高考新政策 1.自2024年起,高考政策强调了对物理和化学科目的基础性要求,特别是在相关专业的学习中。 2.教育部发布的《普通高校本科招生专业选考科目要求指引(通用版)》将于2024年高考开始实施。该政策明确了高校选考科目的优化调整,加强了对物理和化学两门科目的基础性要求。 3.绝大多数“理工农医”类专业要求学生在中学阶段必须选择物理和化学两门科目。部分高校的经济类、金融类、管理

2025-03-16 20:16:31
高考新政策3+1+2是什么意思
高考新政策3+1+2是什么意思

高考新政策3+1+2是什么意思 高考新政策3+1+2的意思是必考3门科目、选修2选1和选修4选2。 一、必考科目为语文、数学、外语三门;选考科目就是1+2,1为从物理和历史中选一门,2为从生物、化学、地理、政治中选择两门。 二、3+1+2和3+3的不同: 1、所谓的3+2+1模式,高考的满分依旧是750分,根据不同兴趣的选择共有8种组合。 (1)3语文、数学、英语作为必考

2025-03-06 12:53:28
高考录取比例分数线1:1,1:1.2是什么意思?
高考录取比例分数线1:1,1:1.2是什么意思?

高考录取比例分数线1:1,1:1.2是什么意思? 意思是院校调档比例。比如,某高校在某省招生100人,比例1:1.05,则调取考生档案105份,若不扩招,一般会有5人被退档而未予录取。 各学校根据自身的投档人数和计划招生人数划定本校最低录取分数线。各校的投档人数是根据各校在本省录取人数的1.2倍投档。 投档以后学校招生办从这1.2倍中以分数和志愿为主,参考学生档案中的其他信息,按计划

2024-06-24 18:18:32