LinkList MaxP( LinkList L){ if(L==NULL||L->next==NULL)return NULL; else{ LinkList p; LinkList MAX; p=L->next; MAX=p; while(p){ if(p->data>MAX->data){ MAX=p; } p=p->next; } return MAX; } }请将里面的create函数完善
时间: 2024-01-21 08:02:20 浏览: 57
单链表的析构函数算法 LinkList.doc
好的,这里是完整的代码示例,包括 `create` 函数的实现:
```c++
#include <iostream>
using namespace std;
struct ListNode {
int data;
ListNode* next;
ListNode(int x) : data(x), next(NULL) {}
};
typedef ListNode* LinkList;
LinkList create() {
int n;
cin >> n;
LinkList head = NULL, tail = NULL;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
ListNode* node = new ListNode(x);
if (head == NULL) {
head = node;
tail = node;
} else {
tail->next = node;
tail = node;
}
}
return head;
}
LinkList MaxP(LinkList L) {
if (L == NULL || L->next == NULL) return NULL;
else {
LinkList p = L->next;
LinkList MAX = p;
while (p) {
if (p->data > MAX->data) {
MAX = p;
}
p = p->next;
}
return MAX;
}
}
int main() {
LinkList L = create();
LinkList max_node = MaxP(L);
if (max_node == NULL) {
cout << "No answer!" << endl;
} else {
cout << max_node->data << endl;
}
return 0;
}
```
`create` 函数中,我们先输入一个整数 `n` 表示链表节点数,然后依次输入每个节点的值,并将其插入链表尾部。函数返回链表的头指针 `head`。
`MaxP` 函数中,我们遍历整个链表,找到最大值所在的节点,并返回该节点的指针。如果链表为空或只有一个节点,则直接返回 `NULL`。
最后在 `main` 函数中,我们调用 `create` 函数创建链表,然后调用 `MaxP` 函数找到最大值所在的节点,并输出其值。如果链表为空,则输出 "No answer!"。
阅读全文