函数insert的功能是:在链表中值为d1的结点之后插入一个值为d2的结点,若查找不到值为d1的结点,输出“no”,且不插入新的结点。请在之前已写的代码基础上将insert函数与main函数补充完整。 输入格式: 输入分两行,第一行,输入结点的数据域,以空格间隔,最后一个输入0,代表输入结束(0不成为新的结点);第二行输入d1和d2(d1是要查找的结点的数据域,d2是要插入的结点的数据域),以空格隔开。 输出格式: 对于能查找到d1结点,输出插入后的链表,最后换行;若查找不到值为d1的结点,输出“no”并换行后,再输出原链表,最后换行。 输入样例: 在这里给出一组输入。例如: 1 3 5 7 9 0 3 6 输出样例: 在这里给出相应的输出。例如: 1 3 6 5 7 9 输入样例: 在这里给出一组输入。例如: 1 2 3 4 5 6 0 7 9 输出样例: 在这里给出相应的输出。例如: no 1 2 3 4 5 6 可以在如下程序中补充代码,也可以自行编写完整代码。 #include<stdio.h> #include<stdlib.h> #define LEN sizeof(nod) typedef struct node { int data; struct node *next; }nod; nod *create() { /**/ /**/ } void insert(nod *head,int d1,int d2)//后插 { /**/ /**/ } void print(nod *head) { /**/ /**/ } int main() { nod *head;int d1,d2; head=/**/ /**/;//调用create函数 scanf("%d%d",&d1,&d2); /**/ /**/;//调用insert函数 print(head); //调用print函数 return 0; }
时间: 2024-02-27 13:58:50 浏览: 25
完整代码如下:
```
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(nod)
typedef struct node {
int data;
struct node *next;
}nod;
nod *create() {
nod *head,*p1,*p2;
head=NULL;
p1=p2=(nod*)malloc(LEN);
scanf("%d",&p1->data);
while(p1->data!=0) {
if(head==NULL)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(nod*)malloc(LEN);
scanf("%d",&p1->data);
}
p2->next=NULL;
return head;
}
void insert(nod *head,int d1,int d2)//后插
{
nod *p1,*p2,*p3;
p1=head;
while(p1!=NULL)
{
if(p1->data==d1)
{
p2=p1->next;
p3=(nod*)malloc(LEN);
p3->data=d2;
p3->next=p2;
p1->next=p3;
return;
}
else
p1=p1->next;
}
printf("no\n");
}
void print(nod *head)
{
nod *p;
p=head;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main() {
nod *head;
int d1,d2;
head=create();//调用create函数
scanf("%d%d",&d1,&d2);
insert(head,d1,d2);//调用insert函数
print(head); //调用print函数
return 0;
}
```