题目:在带头节点的单链表中寻找具有最大值的结点
#include <cstdio>
#include <cstdlib>
typedef int DataType;
typedef struct node{
DataType val;
struct node *next;
}LinkList;
void Init_List(LinkList *&L){
L = (LinkList*) malloc(sizeof(LinkList));
L->next = NULL;
}
void Create_List(LinkList *&L){
LinkList *first = L;
int val, n;
printf("请输入要处理的序列的个数:");
scanf("%d", &n);
if (n == 0) return;
printf("请输入%d个数据:", n);
for (int i = 0; i < n; i++){
scanf("%d", &val);
LinkList *q = (LinkList* ) malloc(sizeof(LinkList));
q->val = val;
first->next = q;
first = q;
}
first->next = NULL;
}
int find(LinkList *&L){
LinkList *first = L->next;
// 找最大值
int max = first->val;
int idx = 1, n = 1;
while (first != NULL){
if (first->val > max) max = first->val, idx = n;
first = first->next;
n++;
}
return idx;
}
int main(){
LinkList *L;
Init_List(L);
Create_List(L); // 利用前插法存入数据
if (L->next == NULL) printf("序列为空。");
else printf("该序列的最大值的结点为第:%d个\n", find(L));
}