用c语言写一个插入函数,用c语言编写一个函数

C语言编写插入节点的函数(悬赏100分)

这个程序有两个主要问题

创新互联是一家朝气蓬勃的网站建设公司。公司专注于为企业提供信息化建设解决方案。从事网站开发,网站制作,网站设计,网站模板,微信公众号开发,软件开发,小程序制作,十多年建站对成都垃圾桶等多个领域,拥有多年设计经验。

1. void insert(list*pHead,list*pNode)因为是按值传递的 pHead值,所以不能改变pHead的值,改为按地址传递,list** pHead

2. insert()中,第一,二种情况时,没有组成循环链表的闭环(没有更新尾节点的next为新的head)。修改后的程序如下:

#includestdio.h //预编译命令

struct list//定义结构体

{

int num;

list* next;

};

list *head,*end; //定义全局变量

list* creat()//创建链表的函数

{

list* p=NULL;

list* q=NULL;

head=NULL;

int num;

scanf("%d",num);

while(num!=0)

{

p=new list; //开辟空间

p-num=num;

if(head==NULL)

head=p;

else

q-next=p;

q=p;

scanf("%d",num);

}

end=q; //将链表的结尾最后一个结点赋给end

end-next=head; //让最后一个结点的的下个结点的地址不为空而指向头指针

return(head);

}

void insert( list** pHead,list* pNode) //插入接点的函数,

{

list *q,*r;

//第一种情况,链表为空

if(*pHead==NULL)

{

*pHead=pNode; //链表头指向pNode

(*pHead)-next = *pHead;//为了循环用

return; //完成插入操作,返回

}

//第二种情况,pNode结点num的值小于dengyu链表头结点num的值

//则将pNode的值插到链表头部

if(pNode-num=(*pHead)-num)

{

//这是为了更新最后一个端点与头节点的连接

list* pos = *pHead;

while (pos-next != *pHead)

{

pos = pos-next;

}

pos-next = pNode;

pNode-next= (*pHead);

*pHead=pNode;

return;

}

//第三种情况,循环查找正确位置

r=*pHead;

q=(*pHead)-next;

while(q!=*pHead)

{

if(pNode-numq-num)

{

r=q;

q=q-next;

}

else

break;

}

//如果插入到最后的位置,则更新pEnd的值

r-next=pNode;

pNode-next=q;

}

list* together(list* p1,list* p2) //定义两个链表合并的函数

{

list *q,*r;

q=p2;

do

{

r=new list; //开辟空间

r-num=q-num; //将q的值赋给r

insert(p1,r); //调用插入结点的函数

q=q-next; //指针向后拨一个接点

}while(q!=p2); //当在最后一个结点时停止循环

return(p1); //返回头指针

}

void main() //主函数

{

list *list1,*list2,*r,*q;

list1=creat(); //调用创建链表的函数

list2=creat(); //调用创建链表的函数

r=together(list1,list2); //调用合并两个链表的函数

q=r-next;

for(;q!=r;q=q-next)

printf("%d ",q-num);

}

c语言 编写数组的插入函数

你只需要建立一个数组,将数组建立的大一点,然后分两次输入数,构建一个数组,在整体排序输出就行了

C语言,insert函数

表示“插入”,它并不是C语言的一部分,用在函数名中可以表示插入元素。

例题:

#include iostream

#include vector

using namespace std;

int main()

{

vectorint intArray;

int i;

for(i=0;i10;i++)

{

intArray.push_back(i);

coutintArray[i]" ";

}

coutendl;

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

for(i=0;iintArray.size();i++)

coutintArray[i]" ";

system("pause");

return 0;

}

C语言函数实现插入

这个很简单啊。基本的思路就是先查找到插入或者删除的数字所在数组的位置,如果是插入,就把之后的依次想后挪动一个,然后插入;如果是删除,把之后的依次想前移动一个就行了,不过别忘了处理最后一个数字就行了。要是还有问题,我帮你写个算了。

如何在我的C语言程序中插入库函数

int add(int x,int y);

int sub(int x,int y);

int mul(int x,int y);

int div(int x,int y);

#include math.h

#include stdio.h

void main()

{

int a,b,c,d,e,f,g,h,i;

printf("XXXXXXXXXXXXXXX计算器");

printf("\n");

for(c=1;c=30;c++)

printf("*");

printf("\n");

printf("请输入一个整数");

printf("\n");

scanf("%d",a);

printf("\n");

for(c=1;c=30;c++)

printf("-");

printf("\n");

printf("请选择您要做的运算:1.+,2.-,3.*,4./5.abs,6.sqrt");

printf("\n");

for(c=1;c=30;c++)

printf("*");

printf("\n");

scanf("%d",d);

printf("\n");

if(d==5) {printf("%d",abs(a));goto end;}(如果想做绝对值,就直接做abs函数(它是个库函数).做完后就goto"end"--也就是函数的最后.)

if(d==6) {printf("%.2f",sqrt(a));goto end;};}(如果想做开平方,就直接做sqrt函数(它是个库函数).做完后就goto"end"--也就是函数的最后.)

printf("请再次输入一个整数"); (如果是做双目的就开始输入第二个数b)

printf("\n");

scanf("%d",b);

printf("\n");

switch(d)

{

case 1:add(a,b);break;

case 2:sub(a,b);break;

case 3:mul(a,b);break;

case 4:div(a,b);break;

default:printf("date input error!\n");

} end: printf("\n");}

int add(int x,int y)

{

int m;

m=x+y;

printf("%d",m);

return m;

}

int sub(int x,int y)

{

int m;

m=x-y;

printf("%d",m);

return m;

}

int mul(int x,int y)

{

int m;

m=x*y;

printf("%d",m);

return m;

}

int div(int x,int y)

{

int m;

m=x/y;

printf("%d",m);

return m;

}

(你试试看吧!应该可以!呵呵)

C语言编写一个插入删除函数

一般呢,插入和删除函数是分开写的,还有分成两种存储结构,1.顺序表,2.链表,我给你一个我上数据结构时候写的链表的操作,里面全都有,如果不会用,追问我

#includestdio.h

#includemalloc.h

#includeWindows.h

#includeconio.h

#includestdlib.h

typedef struct

{

int data;

struct LNode *next;

}LNode;

LNode *Listinit(LNode *L)//初始化链表返还头指针

{

L = (LNode *)malloc(sizeof(LNode));

if (!L)return 0;

L-next = NULL;

return L;

}

int GetElem_L(LNode *L, int i, int *e)//取第i个元素

{

int j;

LNode *p;

p=L-next;j=1;

while(pji)

{

p=p-next;++j;

}

if(!p||ji) return 0;//i超过表长

*e=p-data;

return 1;

}

int ListInsert_L(LNode *L, int i, int e)//插入数据元素

{

LNode *p1 = L,*p2=L;

int j = 0;

if (i-1 LinkLength(L))

return 2;

while(p1!=NULL ji-1)

{

p1 = p1-next;

j++;

}

p2 = (LNode *)malloc(sizeof(LNode));

if (!p2)

return 0;

p2-data = e;

p2-next = p1-next;

p1-next = p2;

return 1;

}

void ClearList(LNode *L)//重置为空表

{

LNode *p;

while(L-next)

{

p=L-next;

L-next=p-next;

free(p);

}

}

void print_link(LNode *L)//输出函数

{

LNode *p = L;

p = p-next;

while (p != NULL)

{

printf("%5d", p-data);

p = p-next;

}

}

int ListDlete_L(LNode *L, int i, int *e)//删除L中I,并用e返回

{

int j = 0;

LNode *p1 = NULL, *p2 = NULL;

p1 = L;

while (p1-next != NULL j i - 1)

{

p1 = p1-next;

j++;

}

if (p1-next == NULL || j i - 1)

return 0;

p2 = p1-next;

p1-next = p2-next;

free(p2);

return 1;

}

int LinkLength(LNode *L)//链表的长度

{

int i = 0;

LNode *p = L-next;

while (p != NULL)

{

i++;

p = p-next;

}

return i;

}


分享名称:用c语言写一个插入函数,用c语言编写一个函数
URL网址:http://scyanting.com/article/dsiehhp.html