c语言listinsert函数(数据结构 C语言 单链表 Status ListInsert_L(Linklist &L,int i,ElemType e) &L是什么意)

:暂无数据 2026-10-02 20:20:02 :0

c语言listinsert函数(数据结构 C语言 单链表 Status ListInsert_L(Linklist &L,int i,ElemType e) &L是什么意)

各位老铁们,大家好,今天由我来为大家分享c语言listinsert函数,以及数据结构 C语言 单链表 Status ListInsert_L(Linklist &L,int i,ElemType e) &L是什么意的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

本文目录

数据结构 C语言 单链表 Status ListInsert_L(Linklist &L,int i,ElemType e) &L是什么意

在C语言中,函数形参是没有&修饰符的,这个&来自于C++,因为使用方便,且目前的大部分编译环境都支持C++,所以不讲究的人在C中使用了C++的&修饰符,在C++的函数形参表中,&修饰符表示对实参的引用,可以这样理解,通过&操作符,在主调函数和被调函数中,主调函数中的实参对于被调函数如同该函数局部变量一样的使用权限,就像全局变量一样。

编写C语言函数insert_list完成将给定的数据插入到单链表的指定位置上

s-》data=y;

写反了。

void insert_list(list *head,int i,int y)
{
list *p,*s;int j=0;
p=head;
do
{
p=p-》next;
j++;
}while(j《i-1);

if(j==i-1)
{
s=(list *)malloc(sizeof(list));
/* 这里写反了 y=s-》data; */
s-》data=y;
s-》next=p-》next;
p-》next=s;
}
}

关于c语言数据结构 insertlist插入算法

您的sort函数有错误。如果我没有讲明白可以联系我。
void
sort(seqlist
*p,int
i,int
e)//将元素e传入到数组的第i个位序前
{
int
j;
//if(p-》n》10)
if(p-》n《10)//判断语句为p-》n应该小于10才不会溢出
for(j=p-》n;j》=i;j--)
{
p-》b[j]=p-》b[j-1];//将第i个位置以后的元素依次后移
//p-》b[i-1]=e;
//p-》n=p-》n+1;
}
p-》b[i-1]=e;//只要在最后插入一次就可以了。
p-》n=p-》n+1;//p-》n=p-》n+1只需运行一次。
}

用C语言创建一个顺序表并完成插入等操作

/*

GY52122008

请输入插入字符 : -

请输入插入位置 : 7

GY5212-2008

Press any key to continue

*/

#include 《malloc.h》
#include 《stdio.h》
#include 《string.h》

#define maxsize 100

typedef struct {
char *data;
int length;
}sqlist;

void initlist(sqlist *&L) { //初始化顺序表
L = (sqlist *)malloc(sizeof(sqlist));
L-》data = (char *)malloc(maxsize);
L-》length = 0;
}
void createlist(sqlist *&L,char a,int n) { //建立顺序表
int i;
for(i = 0;i 《 n;i++) L-》data[i] = a[i];
L-》length = n;
}
bool listinsert(sqlist *&L,int i,char e) { //插入数据元素
int j;
if(i 《 1 || i 》 L-》length + 1) return false;
i--;
for(j = L-》length;j 》 i;j--) L-》data[j] = L-》data[j - 1];
L-》data[i] = e;
L-》length++;
return true;
}
bool listdelete(sqlist *&L,int i,char &e) { //删除数据元素
int j;
if(i 《 1 || i》 L-》length) return false;
i--;
e = L-》data[i];
for(j = 1;j 《 L-》length - 1;j++) L-》data[j] = L-》data[j + 1];
L-》length--;
return true;
}
int listlength(sqlist *L) { //求线性表长度
return(L-》length);
}
void destroylist(sqlist *&L) {
free(L);
}
int locateelem(sqlist *L,char e) { //按元素查找
int i = 0;
while(i 《 L-》length && L-》data[i] != e) i++;
if(i 》= L-》length) return 0;
else return i + 1;
}
void displist(sqlist *L) {  //输出线性表
int i;
for(i = 0;i 《 L-》length;i++) printf(“%c“,L-》data[i]);
printf(“\n“);
}

int main() {
int pos,len;
char ch,data = “GY52122008“;
sqlist *L;
initlist(L); // 先初始化
len = strlen(data);
createlist(L,data,len); // 创建表
displist(L);
printf(“请输入插入字符 : “);
scanf(“%c“,&ch);
printf(“请输入插入位置 : “);
scanf(“%d“,&pos);
if(listinsert(L,pos,ch)) displist(L);
else printf(“插入操作失败。\n“);
free(L-》data);
free(L);
return 0;
}

C语言程序设计题,insert函数怎么写

#include 《stdio.h》
#include 《string.h》
#include 《stdlib.h》

int main() {

char s = “I am a boy.“;
char t = “good “;

void insert(char s, int n, char t);

insert(s, 8, t);
puts(s);

return 0;
}

void insert(char s, int n, char t) {

int lengths = strlen(s);
int lengtht = strlen(t);
int i, j;

if (n 》= lengths) {
perror(“Invalid index.\n“);
exit(1);
}

char tail[lengths - n];
j = n;

for (i = 0; ; i++) {
if (s[j] == ’\0’)
break;
tail[i] = s[j];
j++;
}

tail[i] = ’\0’;
s[n] = ’\0’;

s = strncat(s, t, lengtht);
s = strncat(s, tail, lengths - n);

}


运行结果如下:


谁能用c语言写list的方法 insert delete locate length

#include 《time.h》
#include 《stdio.h》

#define NULL -2
#define ERROR -1
#define OK 1
#define TRUE 2
#define FALSE 3
#define Boolen int
#define Status int

#define LIST_INIT_SIZE 3
#define LIST_INCREMENT 2
#define NAME_LEN 13
#define DES_LEN 30

char ErrDescription[DES_LEN];

typedef struct{
int NO;
char Name[NAME_LEN];
enum{male,female} Sex;
int Age;
char Tel;
char Inserttime;
}ElemType,*ElemPointer;

typedef struct{
ElemPointer base; //基址
int length; //表长
int listsize; //内存占用
int elemcount; //记录数
}SqList,*SqPointer;

int ErrorEXP(int i)
{
switch(i)
{ case 1: strcpy(ErrDescription,“InitList::(ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType)) 空间申请失败“);break;
case 2: strcpy(ErrDescription,“IncreaseList::(ElemType *)realloc(L-》base,(L-》length + LIST_INCREMENT) * sizeof(ElemType)) 空间申请失败“);break;
case 3: strcpy(ErrDescription,“if(!L-》base) return Error; SqList不存在“);break;
case 4: strcpy(ErrDescription,“GetElem:: i 越界“);break;
case 5: strcpy(ErrDescription,“ListInsert:: i 越界“);break;
case 6: strcpy(ErrDescription,“ListInsert:: CALL IncreaseList(L)==ERROR return Error 邻接空间申请失败,由ListInsert返回“);break;
case 7: strcpy(ErrDescription,“ListDelete:: i 越界“);break;
case 8: strcpy(ErrDescription,“KeyInList:: i 越界“);break;
case 9: strcpy(ErrDescription,“KeyInList:: CALL ListInsert(L,i,temp)==ERROR return Error 邻接空间申请失败,由KeyInList返回“);break;
case 10: strcpy(ErrDescription,“ScanfList:: CALL KeyInList(L,i++)==ERROR return Error“);break;
}
puts(“!!!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!!!\n“);
puts(ErrDescription);
puts(“\n!!!!!!!!!!!!!!! ERROR !!!!!!!!!!!!!!!\n“);
return ERROR;
}

Status InitList(SqPointer L)
{
L-》base = 0; //不可不要!!! 去掉后即使(ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType))失败,系统也会认为正常
L-》base = (ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
if(!L-》base) return ErrorEXP(1); //空间申请失败,返回
L-》length = LIST_INIT_SIZE;
L-》listsize = L-》length * sizeof(ElemType);
L-》elemcount = 0;
return OK;
}

Status IncreaseList(SqPointer L)
{
ElemPointer newbase;
newbase = (ElemType *)realloc(L-》base,(L-》length + LIST_INCREMENT) * sizeof(ElemType));
if(!newbase) return ErrorEXP(2);
L-》base = newbase;
L-》length += LIST_INCREMENT;
L-》listsize = L-》length * sizeof(ElemType);
return OK;
}

Status DestroyList(SqPointer L)
{
if(!L-》base) return ErrorEXP(3); //L不存在,返回
free(L-》base);
L-》length = NULL;
L-》listsize = NULL;
L-》elemcount = NULL;
return OK;
}

Status ClearList(SqPointer L)
{
if(!L-》base) return ErrorEXP(3); //L不存在,返回
L-》elemcount = 0;
return OK;
}

Boolen ListEmpty(SqPointer L)
{
if(!L-》base) return ErrorEXP(3); //L不存在,返回
if(L-》elemcount == 0)
return TRUE;
else
return FALSE;
}

int ListElemCount(SqPointer L)
{
if(!L-》base) return ErrorEXP(3); //L不存在,返回
return L-》elemcount;
}

Status GetElem(SqPointer L,int i,ElemType *ret) //调用此函数需将ret指向main函数域某一ElemType变量
{
if(!L-》base) return ErrorEXP(3); //L不存在,返回
if(i 》 L-》elemcount) return ErrorEXP(4); //i越界,返回
*ret = L-》base[i-1]; //i 从1开始 此种方法在main中改变*ret会直接更改链表中数据
return OK;
}
//重大发现 指针型 temp-》base 普通型L.base
int LocateElem(SqPointer L,char Locatename) //返回的i从1开始
{
int i=0;
ElemType *temp;
if(!L-》base) return ErrorEXP(3); //L不存在,返回
while(i《L-》elemcount)
{
temp=&(L-》base[i]); //改为temp=L-》base[i++];并去除下面的i++; ??
if(strcmp(temp-》Name,Locatename) == 0) return i+1; //不能用temp-》Name==locatename来试图比较字符串
i++;
}
return 0;
}

Status ListInsert(SqPointer L,int i,ElemType newelem) //插入位置1《=i《=elemcount+1
{
ElemPointer newbase;
ElemType *temp,*flag;
if(!L-》base) return ErrorEXP(3); //L不存在,返回
if(i《1 || i》L-》elemcount + 1) return ErrorEXP(5);
if(L-》elemcount == L-》length)
if(IncreaseList(L)==ERROR) return ErrorEXP(6);
flag=&(L-》base[i-1]); //插入位置
for(temp=&(L-》base[L-》elemcount-1]);temp》=flag;temp--)
*(temp+1)=*temp;
*flag=newelem;
L-》elemcount++;
return OK;
}

Status ListDelete(SqPointer L,int i,ElemType *ret) //调用此函数需将ret指向main函数域某一ElemType变量
{
ElemType *temp;
if(!L-》base) return ErrorEXP(3); //L不存在,返回
if(i《1 || i》L-》elemcount) return ErrorEXP(7);
*ret=L-》base[i-1]; //删除位置,这里先返回该值
for(temp=&(L-》base[i]);temp《=&(L-》base[L-》elemcount-1]);temp++)
*(temp-1)=*temp;
L-》elemcount--;
return OK;
}

Status KeyInList(SqPointer L,int i)
{
ElemType temp;
time_t t;
char tmp;
char S;
if(!L-》base) return ErrorEXP(3); //L不存在,返回
if(i《1 || i》L-》elemcount + 1) return ErrorEXP(8);
printf(“正在输入第%d个元素的值:“,i);
printf(“\n编号:(int)\n“);
scanf(“%d“,&temp.NO);
printf(“\n姓名:(char *)\n“);
scanf(“%s“,&temp.Name);
printf(“\n性别:(m or f)\n“);
do{
S=getch();
if(S==’m’)
temp.Sex=male;
else if(S==’f’)
temp.Sex=female;
else
puts(“Key in ’m’ or ’f’.\n“);
}while(S!=’m’ && S!=’f’);
putchar(S);
printf(“\n年龄:(int)\n“);
scanf(“%d“,&temp.Age);
printf(“\n电话:(char *)\n“);
scanf(“%s“,&temp.Tel);
printf(“\n记录时间:\n“);
t=time(0);
strftime(tmp,sizeof(tmp),“%Y/%m/%d %X %A 本年第%j天 %z“,localtime(&t));
puts(tmp);
strcpy(temp.Inserttime,tmp);

if(ListInsert(L,i,temp)==OK)
return OK;
else
return ErrorEXP(9);
}

ElemType ScanfElem()
{
ElemType temp;
time_t t;
char tmp;
char S;
printf(“正在录入元素:“);
printf(“\n编号:(int)\n“);
scanf(“%d“,&temp.NO);
printf(“\n姓名:(char *)\n“);
scanf(“%s“,&temp.Name);
printf(“\n性别:(m or f)\n“);
do{
S=getch();
if(S==’m’)
temp.Sex=male;
else if(S==’f’)
temp.Sex=female;
else
puts(“Key in ’m’ or ’f’.\n“);
}while(S!=’m’ && S!=’f’);
putchar(S);
printf(“\n年龄:(int)\n“);
scanf(“%d“,&temp.Age);
printf(“\n电话:(char *)\n“);
scanf(“%s“,&temp.Tel);
printf(“\n记录时间:\n“);
t=time(0);
strftime(tmp,sizeof(tmp),“%Y/%m/%d %X %A 本年第%j天 %z“,localtime(&t));
puts(tmp);
strcpy(temp.Inserttime,tmp);

return temp;
}

Status ScanfList(SqPointer L,int i)
{
char p=’c’;
while(putchar(’\n’),p==’c’||p==’C’)
{ p=’\0’;

if(KeyInList(L,i++)==ERROR) return ErrorEXP(10);

printf(“\nPress ESC key to exit or ’C’ to continue...“);
while(p!=’c’ && p!=’C’ && (int)p!=27)
p=getch();
}
return OK;
}

Status PrintListProperty(SqPointer L)
{
puts(“SqList L Property:“);
if(!L-》base)
{ puts(“链表不存在!“);
return OK;}
else
puts(“链表已初始化...\n“);
printf(“%d/%d BASE=%d,MemoryStatus=%d\n“,L-》elemcount,L-》length,L-》base,L-》listsize);
return OK;
}

Status PrintOnScreen(SqPointer L)
{
int i;
char Stmp,t;
if(!L-》base) return ErrorEXP(3); //L不存在,返回
puts(“Push ’C’ shell CLS or other key to skip.“);
t=getch();
if(t==’c’ || t==’C’)
system(“cls“);
puts(“数据表打印:“);
for(i=0;i《=L-》elemcount-1;i++)
{ printf(“\nElem %d st:\n“,i+1);
if(L-》base[i].Sex == male)
strcpy(Stmp,“male“);
else if(L-》base[i].Sex == female)
strcpy(Stmp,“female“);
else
strcpy(Stmp,“Unknow“);
printf(“NO:%d\tName:%s\t\tSex:%s\tAge:%d\n\tTel:%s\n\tInsertTime:%s\n“,L-》base[i].NO,L-》base[i].Name,Stmp,L-》base[i].Age,L-》base[i].Tel,L-》base[i].Inserttime);
}
return OK;
}

Status PrintElem(ElemPointer elem)
{
char Stmp;
printf(“\nPrintElem:\n“);
if(elem-》Sex == male)
strcpy(Stmp,“male“);
else if(elem-》Sex == female)
strcpy(Stmp,“female“);
else
strcpy(Stmp,“Unknow“);
printf(“NO:%d\tName:%s\t\tSex:%s\tAge:%d\n\tTel:%s\n\tInsertTime:%s\n“,elem-》NO,elem-》Name,Stmp,elem-》Age,elem-》Tel,elem-》Inserttime);
return OK;
}

void main() //把以上所有函数都串了起来
{
SqList TheList;
SqPointer ListP;
ElemType mylistelem,*elemtemp;
ElemPointer mylist;
int i;
char nameT;

elemtemp=&mylistelem //*ret

ListP=&TheList
if(InitList(ListP)==OK) puts(“InitList(TheList)==OK“);
PrintListProperty(ListP);
if(ListEmpty(ListP)==TRUE) puts(“ListEmpty==True“);
else puts(“ListEmpty==False“);
ScanfList(ListP,1);
PrintListProperty(ListP);
PrintOnScreen(ListP);

printf(“ListElemCount return %d.“,ListElemCount(ListP));

puts(“\nGetElem index? “);
scanf(“%d“,&i);
if(GetElem(ListP,i,elemtemp)==OK) PrintElem(elemtemp);

puts(“\nLocateElem name? “);
scanf(“%s“,nameT);
printf(“LocateElem return %d.“,LocateElem(ListP,nameT));

puts(“\nListDelete index? “);
scanf(“%d“,&i);
if(ListDelete(ListP,i,elemtemp)==OK) PrintElem(elemtemp);

puts(“\nListInsert index? “);
scanf(“%d“,&i);
puts(“\nListInsert NEWELEM? “);
ListInsert(ListP,i,ScanfElem());
PrintListProperty(ListP);
PrintOnScreen(ListP);

if(ClearList(ListP)==OK) puts(“ClearList==OK“);
if(ListEmpty(ListP)==TRUE) puts(“ListEmpty==True“);
if(DestroyList(ListP)==OK) puts(“DestroyList==OK“);

getch();
}

/* 函数列表
类型 名称 参数 说明
int ErrorEXP (int i) 错误描述符
Status InitList (SqPointer L) 初始化SqPointer L... 通过L返回base
Status IncreaseList (SqPointer L) L当前满时,继续申请空间
Status DestroyList (SqPointer L) 销毁L
Status ClearList (SqPointer L) 把L置为空表
Boolen ListEmpty (SqPointer L) 判断L是否为空表,是则返回TRUE
int ListElemCount (SqPointer L) 返回当前L中记录的元素个数
Status GetElem (SqPointer L,int i,ElemType *ret) 通过*ret返回i号元素
int LocateElem (SqPointer L,char Locatename) 顺序查找表,根据name字段,返回首个匹配元素的i,无则返回0
Status ListInsert (SqPointer L,int i,ElemType newelem) 在L中的i号位置插入newelem元素
Status ListDelete (SqPointer L,int i,ElemType *ret) 删除L中第i号元素,并用*ret返回该元素
Status KeyInList (SqPointer L,int i) 从键盘输入单个元素并插入到i号位置
ElemType ScanfElem () 从键盘输入单个元素返回一个ElemType类型的节点
Status ScanfList (SqPointer L,int i) 从i号开始递增顺序录入元素到L,直到按’ESC’
Status PrintListProperty(SqPointer L) 打印L的属性,打印格式为(已用空间/已申请空间 基址 内存占用)
Status PrintOnScreen (SqPointer L) 打印整张L表到屏幕
Status PrintElem (ElemPointer elem) 打印单个ElemType类型的元素

时间仓促,所以乱了些,书上2章开头 动态线性的顺序表 的基本操作几乎都写了
不知你说的是不是这个,mian函数比较乱,只是把所有的基本操作都串了起来,你
可以根据情况改改主函数的调用过程,就会比较清楚是怎么实现的了。你可以按F10
进行单部跟踪,F11可以进入调用过程,一步一步跟着程序走一遍就好了。
关于动态链表的我之前写过一个,也好象给你看过,这里再附上一起发过去。文件LinkList.c
只实现了构造链表,并打印出来的功能。
*/

C语言,insert函数

表示“插入”,它并不是C语言的一部分,用在函数名中可以表示插入元素。
例题:
#include 《iostream》
#include 《vector》
using namespace std;
int main()
{
vector《int》 intArray;
int i;
for(i=0;i《10;i++)
{
intArray.push_back(i);
cout《《intArray[i]《《“ “;
}

cout《《endl;
intArray.insert(intArray.begin()+1,intArray.begin()+3,intArray.begin()+5);

for(i=0;i《intArray.size();i++)

cout《《intArray[i]《《“ “;

system(“pause“);
return 0;
}

关于c语言listinsert函数到此分享完毕,希望能帮助到您。

c语言listinsert函数(数据结构 C语言 单链表 Status ListInsert_L(Linklist &L,int i,ElemType e) &L是什么意)

本文编辑:admin

更多文章:


issued retroactively(FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待)

issued retroactively(FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待)

各位老铁们,大家好,今天由我来为大家分享issued retroactively,以及FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站

2026年10月15日 10:30

f发音是什么?printf的返回值是什么

f发音是什么?printf的返回值是什么

大家好,关于f很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于f发音是什么的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月15日 10:10

begin和start的区别(start与begin的区别)

begin和start的区别(start与begin的区别)

其实begin和start的区别的问题并不复杂,但是又很多的朋友都不太了解start与begin的区别,因此呢,今天小编就来为大家分享begin和start的区别的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月15日 09:20

vant官网中文(范特365 是韩国化妆品VANT36.5吗)

vant官网中文(范特365 是韩国化妆品VANT36.5吗)

大家好,今天小编来为大家解答以下的问题,关于vant官网中文,范特365 是韩国化妆品VANT36.5吗这个很多人还不知道,现在让我们一起来看看吧!

2026年10月15日 09:10

特殊字符是指什么?正则表达式中一些特殊字符的用法

特殊字符是指什么?正则表达式中一些特殊字符的用法

大家好,特殊字符相信很多的网友都不是很明白,包括特殊字符是指什么也是一样,不过没有关系,接下来就来为大家分享关于特殊字符和特殊字符是指什么的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

2026年10月15日 08:10

特殊符号网名大全花样符号(特殊符号昵称有哪些)

特殊符号网名大全花样符号(特殊符号昵称有哪些)

本篇文章给大家谈谈特殊符号网名大全花样符号,以及特殊符号昵称有哪些对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月15日 07:30

prison break(越狱(prison break)到底是在讲个什么)

prison break(越狱(prison break)到底是在讲个什么)

各位老铁们好,相信很多人对prison break都不是特别的了解,因此呢,今天就来为大家分享下关于prison break以及越狱(prison break)到底是在讲个什么的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看

2026年10月15日 06:50

c程序设计第五版教学视频(求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!)

c程序设计第五版教学视频(求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!)

各位老铁们,大家好,今天由我来为大家分享c程序设计第五版教学视频,以及求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动

2026年10月15日 06:40

电脑教程入门(电脑初学入门)

电脑教程入门(电脑初学入门)

本篇文章给大家谈谈电脑教程入门,以及电脑初学入门对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月15日 06:20

十六进制转二进制表(16进制转为2进制、8进制、10进制的公式)

十六进制转二进制表(16进制转为2进制、8进制、10进制的公式)

“十六进制转二进制表”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看十六进制转二进制表(16进制转为2进制、8进制、10进制的公式)!

2026年10月15日 06:10

最近更新

issued retroactively(FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待)
2026-10-15 10:30:03 浏览:0
如何制作短视频(短视频怎么制作)
2026-10-15 10:20:11 浏览:0
f发音是什么?printf的返回值是什么
2026-10-15 10:10:03 浏览:0
热门文章

标签列表