赞
踩
本题要求求出单链表值最大的结点并返回。要求实现两个函数。
- /* 建立单链表并返回单链表的头指针 */
- struct Node* buildLinkedList(int* arr, int n);
-
- /* 求单链表值最大的结点,返回指向最大值结点的指针。
- * 若单链表为空,则返回NULL。
- */
- struct Node* getMax(struct Node* head);
其中arr
存放创建单链表所需的数据(均为正整数),n
的值不超过1000
; head
为不带附加头结点的单链表的头指针。
- #include <stdio.h>
- #include <stdlib.h>
-
- struct Node {
- int data;
- struct Node* next;
- };
-
- /* 建立单链表并返回单链表的头指针 */
- struct Node* buildLinkedList(int* arr, int n);
-
- /* 求单链表值最大的结点 */
- struct Node* getMax(struct Node* head);
-
- int main(int argc, char const *argv[])
- {
- int *a, n, i;
- scanf("%d", &n);
- a = (int*)malloc(n * sizeof(int));
- for (i = 0; i < n; ++i) {
- scanf("%d", &a[i]);
- }
-
- struct Node* head = NULL;
-
- head = buildLinkedList(a, n);
-
- struct Node* pMax = getMax(head);
- if (pMax)
- printf("%d\n", pMax->data);
- else
- printf("-1\n");
-
- free(a);
-
- return 0;
- }
-
- /* 请在这里填写答案 */
- 4
- 3 7 9 5
9
- struct Node* buildLinkedList(int* arr, int n)
- {
- struct Node*head=NULL,*p1,*p2;
- int i=0;
- while(i<n)
- {
- p1=(struct Node*)malloc(sizeof(struct Node));
- p1->data=arr[i];
- if(head==NULL)
- head=p1;
- else
- p2->next=p1;
- p2=p1;
- i++;
- }
- return head;
- }
- struct Node* getMax(struct Node* head)
- {
- struct Node *p;
- p=head;
- struct Node *max=0;
- while(p){
- if(p==head){
- max=p;
- }
- else{
- if(p->data>max->data)
- max=p;
- }
- p=p->next;
- }
- return max;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。