f查找链表第i个结点 函数find的功能是:查找链表head中的第i个结点(结点从1开始编号),查找到输出第i个节点的值,若不存在第i个结点,输出“no”。请在之前已写的代码基础上将find函数和main函数补充完整。 输入格式: 输入分两行,第一行,输入结点的数据域,以空格间隔,最后一个输入0,代表输入结束(0不成为新的结点);第二行输入要查找的第i个结点中的i。 输出格式: 输出第i个结点的数据域,若不存在第i个结点,输出“no”。 输入样例: 在这里给出一组输入。例如: 1 3 5 7 9 0 5 输出样例: 在这里给出相应的输出。例如: 9 输入样例: 在这里给出一组输入。例如: 1 3 5 7 9 0 6 输出样例: 在这里给出相应的输出。例如: no 可以在如下程序里补充代码,也可以自行编写完整代码。 #include<stdio.h> #include<stdlib.h> #define LEN sizeof(nod) typedef struct node { int data; struct node *next; }nod; nod *create() { /**/ /** / } void find (nod *head,int i) { /**/ /**/ } int main() { nod *head;int i; head=/**/ /**/;//调用create函数 scanf("%d",&i); /**/ /**/; //调用find函数 return 0; }
时间: 2024-02-27 09:58:39 浏览: 64
可以参考下面的代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct node)
struct node {
int data;
struct node *next;
};
struct node *create() {
struct node *head, *p, *q;
int num;
head = NULL;
scanf("%d", &num);
while (num != 0) {
p = (struct node *)malloc(LEN);
p->data = num;
p->next = NULL;
if (head == NULL) {
head = p;
} else {
q->next = p;
}
q = p;
scanf("%d", &num);
}
return head;
}
void find(struct node *head, int i) {
struct node *p;
p = head;
int j = 1;
while (p != NULL && j < i) {
p = p->next;
j++;
}
if (p == NULL || j > i) {
printf("no\n");
} else {
printf("%d\n", p->data);
}
}
int main() {
struct node *head;
int i;
head = create();
scanf("%d", &i);
find(head, i);
return 0;
}
```
输入格式:
输入分两行,第一行,输入结点的数据域,以空格间隔,最后一个输入0,代表输入结束(0不成为新的结点);第二行输入要查找的第i个结点中的i。
输出格式:
输出第i个结点的数据域,若不存在第i个结点,输出“no”。
输入样例:
1 3 5 7 9 0
5
输出样例:
9
输入样例:
1 3 5 7 9 0
6
输出样例:
no
阅读全文