#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; LinkList Create(); LinkList MaxP( LinkList L); int main() { LinkList L,p; ElemType e; L = Create(); p = MaxP(L); if(p) printf("%d\n", p->data); else printf("NULL"); return 0; } 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; } }请完善这个代码
时间: 2024-01-15 17:05:49 浏览: 69
好的,这个代码中存在一些问题,我来完善一下:
```
#include <stdio.h>
#include <stdlib.h>
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode* next;
} LNode, *LinkList;
LinkList Create();
LinkList MaxP(LinkList L);
int main() {
LinkList L, p;
ElemType e;
L = Create();
p = MaxP(L);
if (p)
printf("%d\n", p->data);
else
printf("NULL");
return 0;
}
LinkList Create() {
LinkList L, p, r;
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
r = L;
ElemType e;
scanf("%d", &e);
while (e != -1) {
p = (LinkList)malloc(sizeof(LNode));
p->data = e;
r->next = p;
r = p;
scanf("%d", &e);
}
r->next = NULL;
return L;
}
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(),并且在链表的尾部添加了一个-1作为结束标志。同时我还修正了一些细节问题,现在这个代码应该可以正常运行了。
阅读全文