赞
踩
算法设计与分析题目
对于地址这个定义没太清楚,这是指它所在的序号还是本身的地址呢?
所以输出了两种结果
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct Node {
- int data;
- int num;
- struct Node *next;
- }LinkNode;
-
- LinkNode *Maxnode(LinkNode *L)
- {
- if(L->next== NULL)
- return L;
- else {
- LinkNode *maxp;
- maxp = Maxnode(L->next);
- if(L->data > maxp->data)
- return L;
- else
- return maxp;
- }
- }
-
- LinkNode *CreateList(int a[],int n) {
- if(n < 0)
- return NULL;
- LinkNode *head = (LinkNode *)malloc(sizeof(LinkNode));
- LinkNode *p = (LinkNode *)malloc(sizeof(LinkNode));
- p = head;
- head->data = a[0];
- head->num = 0;
- int i = 0;
- for(i = 1; i < n; i++) {
- LinkNode *node = (LinkNode *)malloc(sizeof(LinkNode));
- node->data = a[i];
- node->num = i;
- p->next = node;
- p = node;
- }
- p->next = NULL;
- return head;
- }
-
- void DispList(LinkNode *ln)
- {
- printf(" ");
- if(ln != NULL){
- printf("%d",ln->data);
- DispList(ln->next);
- }
- }
- void Release(LinkNode *ln)
- {
- if(ln->next == NULL)
- return ;
- else {
- Release(ln->next);
- free(ln);
- }
- }
- int main()
- {
- int a[] = {56,42,2,76,8,22,45,19};
- LinkNode *L,*p;
- int n = sizeof(a) / sizeof(a[0]);
- L = CreateList(a,n);
- printf("非空链表为:");
- DispList(L);
- p = Maxnode(L);
- printf("\n最大值为:%d", p->data);
- printf("\n最大值的地址为:%d",&p);
- printf("\n最大值对应的序号为:%d",p->num);
- Release(L);
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。