当前位置:   article > 正文

6-5 单链表最大值_本题要求求出不带头结点的单链表中的最大值并返回。 /* 求单链表值最大的结点 */

本题要求求出不带头结点的单链表中的最大值并返回。 /* 求单链表值最大的结点 */

本题要求求出单链表值最大的结点并返回。要求实现两个函数。

函数接口定义:

  1. /* 建立单链表并返回单链表的头指针 */
  2. struct Node* buildLinkedList(int* arr, int n);
  3. /* 求单链表值最大的结点,返回指向最大值结点的指针。
  4. * 若单链表为空,则返回NULL。
  5. */
  6. struct Node* getMax(struct Node* head);

其中arr存放创建单链表所需的数据(均为正整数),n 的值不超过1000head 为不带附加头结点的单链表的头指针。

裁判测试程序样例:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. struct Node {
  4. int data;
  5. struct Node* next;
  6. };
  7. /* 建立单链表并返回单链表的头指针 */
  8. struct Node* buildLinkedList(int* arr, int n);
  9. /* 求单链表值最大的结点 */
  10. struct Node* getMax(struct Node* head);
  11. int main(int argc, char const *argv[])
  12. {
  13. int *a, n, i;
  14. scanf("%d", &n);
  15. a = (int*)malloc(n * sizeof(int));
  16. for (i = 0; i < n; ++i) {
  17. scanf("%d", &a[i]);
  18. }
  19. struct Node* head = NULL;
  20. head = buildLinkedList(a, n);
  21. struct Node* pMax = getMax(head);
  22. if (pMax)
  23. printf("%d\n", pMax->data);
  24. else
  25. printf("-1\n");
  26. free(a);
  27. return 0;
  28. }
  29. /* 请在这里填写答案 */

输入样例:

  1. 4
  2. 3 7 9 5

输出样例:

9

 

 

  1. struct Node* buildLinkedList(int* arr, int n)
  2. {
  3. struct Node*head=NULL,*p1,*p2;
  4. int i=0;
  5. while(i<n)
  6. {
  7. p1=(struct Node*)malloc(sizeof(struct Node));
  8. p1->data=arr[i];
  9. if(head==NULL)
  10. head=p1;
  11. else
  12. p2->next=p1;
  13. p2=p1;
  14. i++;
  15. }
  16. return head;
  17. }
  18. struct Node* getMax(struct Node* head)
  19. {
  20. struct Node *p;
  21. p=head;
  22. struct Node *max=0;
  23. while(p){
  24. if(p==head){
  25. max=p;
  26. }
  27. else{
  28. if(p->data>max->data)
  29. max=p;
  30. }
  31. p=p->next;
  32. }
  33. return max;
  34. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/515538
推荐阅读
相关标签
  

闽ICP备14008679号