barriers / 阅读 / 详情

c语言简单程序,有一段线性表插入的函数,请高手详细解析,十分感谢

2023-06-12 07:02:29
共1条回复
陶小凡

这是数据结构中标准的线性表插入程序,但是它不是真正的c语言,而是类c哦。

status Insertlist(Sqlist &L,int i,Elemtype e){

Elemtype *p; //在这里定义了一个*p的指针,目的是找到链表中每个结点的首地址就可以了,不用找一个结点的所用地址啊

int j;

if(L.length==L.listsize) //L.listsize是代表的表的上限值,是事先设定好的

printf("内存分配空间已不够,请重新分配: ");

p=L.elem;//这条语句应该写在下一条语句的后面,也就是分配后的地址给到临时指针变量p中

L.elem=(Elemtype *)realloc(p,(LISTSIZE+L.listsize)*sizeof(Elemtype));

//这条语句是想一下子分配足够大的线性表空间,realloc在C中不认可的,实现时还要用malloc,这里只是设计实现的,而分配成功后L.elem只是得到分配单元的首地址,不成功则是空值。

if(!p){

printf("分配空间失败");

exit(0);

}

L.elem=p;//这条语句应该没用吧

L.length++;//这条语句应该放在成功插入的后面,也就是return 1;语句之前才对

L.listsize=L.listsize+LISTSIZE_INCE;

if(i<1||i>L.length){ //这里用到的是运算符||,代表是“或”,也就是说i<1代表输入时误操作造成,而i>L.length代表输入的位置超出表中数据的个数,位置找不到。

printf("插入位置输入不正确,请重新操作: ");

return 0;//代表插入失败

}

else{

for(j=L.length-1;j>=i;j--)//从i到最后表尾顺次下移,腾出i的位置

L.elem[j+1]=L.elem[j];

L.elem[i]=e;//将数据插入到i的位置中

return 1;//代表插入成功

}

return 1;

}

相关推荐

数据结构中elem表示什么?

elem是单词element(元素)的缩写,在程序定义中代表某一不确定的类型,也就是抽象的数据类型为了使程序可读性强,并且便于修改,让elem代表多种的数据类型也就是为int、char等等的数据类型,起了一个别名在头文件中定义:typedef char elem; /* 抽象元素类型为char类型,这样定义之后,下面的程序中elem所定义的元素就是char类型的了 */如果需要修改其类型,直接修改char到其他类型,elem便又代表了所修改的类型数据,这也是方便性的体现。
2023-06-11 13:33:201

python函数参数中的elem是什么意思?

这个是系统自动的迭代操作。不是不用传参,是系统自动传递了一个参数给它random 是一个迭代对象,每一次迭代释放一个元素,takeSecond(2,2) 返回(2)takeSecond(3,4) 返回(4)takeSecond(4,1) 返回(1)takeSecond(1,3) 返回(3)l列表就参照(2,4,1,3)来排序
2023-06-11 13:33:292

如图的算法里面elem是什么意思?

英语单词element:中文意思是要素/元素。elem是element的简写。elem[]是一个声明的数组。
2023-06-11 13:33:371

python函数参数中的elem是什么意思?

这个是系统自动的迭代操作。不是不用传参,是系统自动传递了一个参数给它random是一个迭代对象,每一次迭代释放一个元素,takeSecond(2,2)返回(2)takeSecond(3,4)返回(4)takeSecond(4,1)返回(1)takeSecond(1,3)返回(3)l列表就参照(2,4,1,3)来排序
2023-06-11 13:33:461

typedef和Elem是什么意思?(数据结构)

其实就是结构的定义,不过现在好象都用类了,呵呵
2023-06-11 13:33:563

数据结构里为什么elem是指针而data却是个变量,两者定于的区别是什么求大神解释下

因为国外作者写书的时候喜欢这样定义,如果你写书,你不喜欢当前书中定义,你完全可以反过来定义data指针而elem定义为变量。甚至用猫、狗做名字都行。
2023-06-11 13:34:031

C语言中 L->elem 和L.elem中L有什么不同,->和.用法有什么不同

L->elem 中L必须是指针,而L.elem中的L一定是普通结构体变量->和.都是引用结构体成员的运算符,前者是通过指针引用,而后者是通过变量引用
2023-06-11 13:34:101

在顺序线性表中,ElemType *elem; 定义的elem为什么后面可以用 L.elem[i]形式,elem是数组吗还是怎么回

数组名实际上就是第一个元素的指针,指针和数组在用法上有很多相似*(elem+n) 和elem[n] 返回的是同一个东西
2023-06-11 13:34:171

c语言链表L->elem[i-1]?

是的哟,你有谭浩强的C程序设计吗 就是红封面的那本,关于链表的在书的309页
2023-06-11 13:34:273

L.elem=(ElemType*)malloc(LIST-INIT-SIZE*si都zeof(ElemType)) 这句话如何理解

这好像是《数据结构(C语言版)》里面介绍的线性表。这里是某种数据结构,就假设这是一个线性表,它储存的元素的数据类型为ElemType(就像整型,浮点型,或者是自定义型等等),表长为LIST-INIT-SIZE,L是一个线性表,L的elem成员是这个线性表的首元素的地址。这个表达式的意思就是分配一个长度为LIST-INIT-SIZE个ElemType长度的空间并强制转换为ElemType类型的指针,将该指针的地址赋给L.elem。 这样L就是一个已经分配过空间的线性表了,它已经有了一个空的存储空间,可以放LIST-INIT-SIZE个ElemType类型的数据。
2023-06-11 13:34:461

L是什么,结构体吗,L.elem又是啥 还有L.length,谢谢好心人

L就是你上面声明的结构体的引用...L.XX是你调用里面的变量..
2023-06-11 13:34:554

数据结构中if(!l.elem)是什么意思?

如果l是空的,就执行if后的语句
2023-06-11 13:35:034

数据结构顺序表中e、i、elem[i-1]分别代表什么意思?

e是返回值,i是你找的的值的位置elem[i-1]是你找的值
2023-06-11 13:35:121

elemtype *p_elem=l.elem在数据结构中是什么意思

定义一个指针变量p_elem,指向l.elem,即指向l的成员数组elem基址,或起始地址
2023-06-11 13:35:211

电脑中没有elemtype

ElemType是数据结构的书上为了说明问题而用的一个词。它是element type(“元素的类型”)的简化体。 因为数据结构是讨论抽象的数据结构和算法的,一种结构中元素的类型不一定是整型、字符型、浮点型或者用户自定义类型,为了不重复说明,使用过程中用“elemtype”代表所有可能的数据类型,简单明了的概括了整体。在算法中,除特别说明外,规定ElemType的默认是int型。elem是单词element(元素)的缩写,在程序定义中代表某一不确定的类型,也就是抽象的数据类型为了使程序可读性强,并且便于修改,让elem代表多种的数据类型也就是为int、char等等的数据类型,起了一个别名在头文件中定义:typedef char elem; /* 抽象元素类型为char类型,这样定义之后,下面的程序中elem所定义的元素就是char类型的了 */如果需要修改其类型,直接修改char到其他类型,elem便又代表了所修改的类型数据,这也是方便性的体现。
2023-06-11 13:35:305

typedef struct { ElemType *elem; int length; int listsize; }SqList;其中ElemType *elem;是什么意思

数据结构中的链表
2023-06-11 13:35:455

数据结构,线性表顺序表示定义的结构体中含有Elemtype *elem;下文为什么就是用elem[i]了?

确实是第i个元素,不是地址加1。C/C++默认指针+1时,为指针地址加上该指针所指类型的大小。
2023-06-11 13:36:171

L是什么,结构体吗,L.elem又是啥

在这里是一个结构体变量。
2023-06-11 13:36:255

l->elem[i].zongfen什么意思?

->表示l是对象/结构体的指针,在这个对象/结构体中,有elem[]数组.(是学生吗)elem[]数组的每个元素对应一个学生。学生有自己的属性,zongfen(总分)是其中一个。l指向的学生群体中i号学生的总分
2023-06-11 13:36:511

数据结构*e = (*L).elem[i - 1]和e = &(*L).elem[i - 1]的区别

+&是取地址,不加&就是取值。
2023-06-11 13:36:591

L.elem=(char *)malloc(50*sizeof(char)); 这条语句是什么意思?

elem是类L中的一个成员变量:char*elem;L.elem=(char*)malloc(50*sizeof(char));给elem动态分配50个字符单元,返回char型指针,指向字符单元的首地址。如果动态分配成功,接着你可以把char*elem;看成charelem[50];在程序中使用。动态分配成功或失败测试法:if(!L.elem){动态分配失败}else{动态分配成功};
2023-06-11 13:37:051

数据结构中q=&(L.elem[i-1])是什么意思?

只是判断l中的数据成员elem是否为0,为0即执行if下面语句
2023-06-11 13:37:153

单链表的基本操作

这是一些基本操作 看了之后应该就会做上面的了 { // 操作结果:构造一个空的顺序线性表 L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); if(!L.elem) exit(OVERFLOW); // 存储分配失败 L.length=0; // 空表长度为0 L.listsize=LIST_INIT_SIZE; // 初始存储容量 return OK; } Status DestroyList(SqList &L) { // 初始条件:顺序线性表L已存在。操作结果:销毁顺序线性表L free(L.elem); L.elem=NULL; L.length=0; L.listsize=0; return OK; } Status ClearList(SqList &L) { // 初始条件:顺序线性表L已存在。操作结果:将L重置为空表 L.length=0; return OK; } Status ListEmpty(SqList L) { // 初始条件:顺序线性表L已存在。操作结果:若L为空表,则返回TRUE,否则返回FALSE if(L.length==0) return TRUE; else return FALSE; } int ListLength(SqList L) { // 初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数 return L.length; } Status GetElem(SqList L,int i,ElemType &e) { // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L) // 操作结果:用e返回L中第i个数据元素的值 if(i<1||i>L.length) exit(ERROR); e=*(L.elem+i-1); return OK; } int LocateElem(SqList L,ElemType e,Status(*compare)(ElemType,ElemType)) { // 初始条件:顺序线性表L已存在,compare()是数据元素判定函数(满足为1,否则为0) // 操作结果:返回L中第1个与e满足关系compare()的数据元素的位序。 // 若这样的数据元素不存在,则返回值为0。算法2.6 ElemType *p; int i=1; // i的初值为第1个元素的位序 p=L.elem; // p的初值为第1个元素的存储位置 while(i<=L.length&&!compare(*p++,e)) ++i; if(i<=L.length) return i; else return 0; } Status PriorElem(SqList L,ElemType cur_e,ElemType &pre_e) { // 初始条件:顺序线性表L已存在 // 操作结果:若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱, // 否则操作失败,pre_e无定义 int i=2; ElemType *p=L.elem+1; while(i<=L.length&&*p!=cur_e) { p++; i++; } if(i>L.length) return INFEASIBLE; else { pre_e=*--p; return OK; } } Status NextElem(SqList L,ElemType cur_e,ElemType &next_e) { // 初始条件:顺序线性表L已存在 // 操作结果:若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继, // 否则操作失败,next_e无定义 int i=1; ElemType *p=L.elem; while(i<L.length&&*p!=cur_e) { i++; p++; } if(i==L.length) return INFEASIBLE; else { next_e=*++p; return OK; } } Status ListInsert(SqList &L,int i,ElemType e) // 算法2.4 { // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L)+1 // 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 ElemType *newbase,*q,*p; if(i<1||i>L.length+1) // i值不合法 return ERROR; if(L.length>=L.listsize) // 当前存储空间已满,增加分配 { if(!(newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType)))) exit(OVERFLOW); // 存储分配失败 L.elem=newbase; // 新基址 L.listsize+=LISTINCREMENT; // 增加存储容量 } q=L.elem+i-1; // q为插入位置 for(p=L.elem+L.length-1;p>=q;--p) // 插入位置及之后的元素右移 *(p+1)=*p; *q=e; // 插入e ++L.length; // 表长增1 return OK; } Status ListDelete(SqList &L,int i,ElemType &e) // 算法2.5 { // 初始条件:顺序线性表L已存在,1≤i≤ListLength(L) // 操作结果:删除L的第i个数据元素,并用e返回其值,L的长度减1 ElemType *p,*q; if(i<1||i>L.length) // i值不合法 return ERROR; p=L.elem+i-1; // p为被删除元素的位置 e=*p; // 被删除元素的值赋给e q=L.elem+L.length-1; // 表尾元素的位置 for(++p;p<=q;++p) // 被删除元素之后的元素左移 *(p-1)=*p; L.length--; // 表长减1 return OK; } Status ListTraverse(SqList L,void(*vi)(ElemType&)) { // 初始条件:顺序线性表L已存在 // 操作结果:依次对L的每个数据元素调用函数vi()。一旦vi()失败,则操作失败 // vi()的形参加"&",表明可通过调用vi()改变元素的值 ElemType *p; int i; p=L.elem; for(i=1;i<=L.length;i++) vi(*p++); cout<<endl; return OK; }
2023-06-11 13:37:241

在c语言中S->elem[S->top]=x啥意思?

你学的结构体吧,s是结构体指针,因此用—>,指向成员数组,数组下标top也是结构体成员, 这个定义原型是:struct stu{int elem[10];int top;}S;就是这样。
2023-06-11 13:37:343

void (*visit)(ElemType elem是什么意思

这个是函数指针 。通常是把函数的首地址传给他,然后用他来执行函数。比如voidsolve(ElemTypeelem){..}intmain(){void(*visit)(ElemTypeelem);visit=solve;(*visit)(ElemTypeelem);}
2023-06-11 13:37:421

if(!L.elem) return ERROR;是什么意思

如果L.elem为0或者空,返回错误
2023-06-11 13:38:043

ANSYS中eplot命令和/pnum,ELEM,1命令有什么区别?

您好,二者功能不一样,eplot是更新显示单元的意思,/pnum是打开单元号设置的意思,看您的命令应该是将单元号和节点号打开后进行显示的用途,更为准确的建议您去查找帮助文档进行研究与学习,谢谢。。。
2023-06-11 13:38:121

数据结构中结构体定义的问题,请高手解答,不甚感激?

啥问题,你输出printf 的时候 注意各个输出之间加空格另外输入的时候 最后三个输入的时候三个之间注意加 逗号 至于#include"stdafx.h" 估计是你选择了 console 工程 会 加上这个头文件 必须加
2023-06-11 13:38:343

数据结构删除操作为什么用q=l.elem+l.length-1表示尾元素的位置?这句话的L.el

顺序存储结构(实际上就是数组)中,l.elem表示线性表l中存储数据(数组)的基地址(起始地址),l.length是表的长度(数据元素个数),q是指针通过上式计算后指向尾元素和数组的情况一样,例如:int a[10],*p=a;//p指向第一个元素p=a+1;//指向第二个元素则:p=a+10-1;指向最后一个数组元素,即a[9]
2023-06-11 13:38:411

捷安特的ELEM电动车怎么样谢谢了,大神帮忙啊

他们的工作人员应该最了解自己的产品, 你可以去找他们的客服区咨询一下。目前琢么网是现在非常受欢迎的企业品牌客服平台搜“琢么网”,登陆捷安特客服平台的群组和他们聊聊应该能有所收获 希望你能得到满意的答复
2023-06-11 13:38:502

c++数据结构代码解释~~ 麻烦真正明白的好心人帮我解释解释~ 我就是不太理解~~非常感谢啦~~

这就是对一个结果链的插入而已.首先要理解的是,插入函数的三个参数.&L是要插入元素的链表,i是要插入的位置,而e则是要插入的元素.那么链表就是一个ElemType类型的链表.L.elem[i-1]就是要插入位置的元素,表示的意思就是插入到该元素的前边.比如我们说要插入到第五位,那么插入时的序号为L.elem[4],因为L.elem[0]是第一位,元素计位是从0开始的!而L.elem[i-1]显然是求要插入元素位置的元素.而&(L.elem[i-1])则是获得相应位置的指针.这个理解了,那么L.elem[L.Lehgth-1]也好理解了吧?他就是最后一个元素.而p=&(L.elem[L.Length-1])就是最后一个元素的指针.当然,如果你都知道p的初始条件是最后一个元素的指针的话,就应该知道为什么是--p了,那p如果是加,必定出界的!所以移动是是从最后一个向后移动一位,直到移动到插入位置.这样就把插入位置"留"出来了,然后就链表插入一个元素就可以了!当然,链表的长度也自然要多计一位了!所以你还会看到++L.Length的语句!
2023-06-11 13:39:061

在调用jquery时报错,页面控制台显示TypeError: elem is undefined,指向jquery.js文件中的

elem这个变量 是什么?在哪里赋值的?赋值没成功 是未定义的
2023-06-11 13:39:132

c语言.小弟虚心求教

#include<stdio.h>#define stack_size 50typedef struct{int elem[stack_size]; int top;}seqstack;int push(seqstack s,int x){if(s.top==stack_size) return 0; else s.elem[s.top]=x; s.top++; return 1;}main(){int b=3,c; seqstack a; a.elem[0]=1; a.elem[1]=2; a.top=a.elem[1]; c=push(a,b);}
2023-06-11 13:39:233

scanf(&L.elem[i])和scanf("%d",&L.elem[i])的区别?

scanf(&L.elem[i])是错误的,scanf("%d",&L.elem[i])是正确的——向变量L的成员数组elem的第i个元素赋一个键盘输入的整型值。
2023-06-11 13:39:341

实现顺序表的基本操作,编写将两个顺序表合并的算法或程序

将A表中元素依次拿出,每拿出一个元素,将它插入到B表结尾并进行排序,直到将所有A表中所有元素都拿出完为止
2023-06-11 13:39:422

L.elem=(ElemType *)malloc(100*sizeof(ElemType));详细解释下,必有重谢!

malloc在堆上分配可以容纳100个ElemType的内存空间,然后返回指向这个空间起始地址的指针。malloc返回的指针类型是void *,(ElemType *)是强制类型转换,把这个void类型的指针转换为ElemType类型的指针,然后把这个指针的值赋给L.elem。C语言规定,void *可以转换为任何类型的指针,所以在C里没有这个强制类型转换不会出错,但是C++对类型要求比较严格,赋值时必须保证两边类型一致,所以需要这个强制类型转换。虽然C里不需要这个强制类型转换,但是这样是使用指针的良
2023-06-11 13:39:491

c++里的“Elem”是什么类型?

elem是单词element(元素)的缩写,在程序定义中代表某一不确定的类型,也就是抽象的数据类型为了使程序可读性强,并且便于修改,让elem代表多种的数据类型也就是为int、char等等的数据类型,起了一个别名在头文件中定义:typedef char elem; /* 抽象元素类型为char类型,这样定义之后,下面的程序中elem所定义的元素就是char类型的了 */如果需要修改其类型,直接修改char到其他类型,elem便又代表了所修改的类型数据,这也是方便性的体现。
2023-06-11 13:40:272

数据结构中elem表示什么?尽量详细点,谢啦.

elem是单词element(元素)的缩写,在程序定义中代表某一不确定的类型,也就是抽象的数据类型 为了使程序可读性强,并且便于修改,让elem代表多种的数据类型 也就是为int、char等等的数据类型,起了一个别名 在头文件中定义:typedef char elem; /* 抽象元素类型为char类型,这样定义之后,下面的程序中elem所定义的元素就是char类型的了 */ 如果需要修改其类型,直接修改char到其他类型,elem便又代表了所修改的类型数据,这也是方便性的体现.
2023-06-11 13:40:341

l.elem是什么意思?

你这是在学数据结构吧。这些都是数据抽象,l.elem表示引用对象l的数据成员elem。l应该是顺序表,elem是顺序表的元素
2023-06-11 13:40:421

l->elem_array是什么意思?

你这个是我们英文字母里面的一个,一个一些排列组合。
2023-06-11 13:41:004

L.elem是什么意思

L(L为结构体变量,或类对象等)的elem成员
2023-06-11 13:41:361

ElemType是什么?

在定义结构体array的时候有这样一段: typedef struct{ElemType data[maxsize]; int length;}array; 在《数据结构》中,关于数据元素的类型定义均用“ ElemType e;”来表示,其中e是表示数据元素的变量,而ElemType则是它的类型,ElemType的含义就是“数据元素的类型”,是一个抽象的概念,是表示我们所要使用的数据元素应有的类型。 使用:typedef int ElemType;//定义ElemType为int类型 也可以用模板表示,类似template<class T里面的T。 这对于初学数据结构的学生来说理解起来有些难度,为了利于理解,我们可以把”ElemType“等同于”一套房子“来理解: “一套房子”的含义大家都非常清楚,但一套房子的具体含义是因人而异的,有的认为是“四室二厅”,有的认为是“二室一厅”,也有的认为是“一室一厅”,对此大家也没有任何异议!其实ElemType也是这样的,它有时表示“整型”,有时表示“用户自定义的结构体”,也可以是其他形式的类型自由表示!
2023-06-11 13:41:473

js中elem.style["width"] = "200px" 这种设置样式不太明白,谁给说说

将设置elem的样式属性中的width 为 200像素;elem.style.width = "200px";是同理就像window["alert"](1);等同于 window.alert(1); 是一个道理
2023-06-11 13:42:361

(ElemType *)是啥意思?

一个类型为ElemType的指针
2023-06-11 13:43:093

L.elem=(Elemtype *)malloc(LIST_INIT_SIZE*sizeof(Elemtype));

动态分配存储空间
2023-06-11 13:43:483

root.append(elem)的作用

一般来说这个程序的作用大概就是帮你解决生活上的问题, 里面功能性软件齐全,能看漫画,看电视,看小说,支持解压压缩包RAR ,ZIP,7z,XZ格式的压缩包,还能帮你解决生活上的难题
2023-06-11 13:43:571

L.elem=(ElemType *)malloc(100*sizeof(ElemType));详细解释下,必有重谢!

强制类型转换,你要所申请到的空间必定是ElemType这种类型的空间,理论上如果你确定你所申请空间的大小,这句可以不写,这是为了确保程序的正确运行,如果是运算可以保证此种类型运算结果的精确性。
2023-06-11 13:44:053

float & vector::elem(int i)中的&是什么意思

float 是保留字,不可能是变量名,所以 float & vector。。。 不会是表达式。(如果是表达式, & 是 按位与运算符)所以它是英文句子。 & 是 and , 中文意思是 和,同,与 的意思。
2023-06-11 13:44:132

if(!Lc.elem)exit(OVERFLOW) 为什么会出现储存分配失败的状况?

if(!Lc.elem)exit(OVERFLOW) 为什么会出现储存分配失败的状况?答:内存不足呗。计算机在什么情况下会出现这种状况呀?答:一般两种情况:你本机运行的程序太多以至于不能给现在新开的程序已足够的内存;自己写的程序有比较严重的内存泄露问题,加之数据量较大。
2023-06-11 13:44:232

在vs中运行以下程序出错说是"L"未声明还有”.elem左侧必须有类/结构/联合 怎么修改啊??

貌似L是一个宏
2023-06-11 13:44:302