永发信息网

写一个函数找出链表中的最大数和次大数

答案:2  悬赏:0  手机版
解决时间 2021-02-01 21:31
节点定义如下
struct Num
{
int num;
struct Num *next;
};
最佳答案
void linkedListMax2(strut Num *list, int *pmax, int *pmax2)
{
    assert(pmax != NULL && pmax2 != NULL);  // assert() in <assert.h>
    int max  = INT_MIN;  // INT_MIN in <limits.h>
    int max2 = INT_MIN;

    struct Num *cur = list;
    while(cur) {
        if( cur->num > max ) {
            max2 = max;
            max = cur->num;
        }
        else if( cur->num > max2 ) { // max2 < cur->num <= max
            max2 = cur->num;
        }
        cur = cur->next;
    }
    if(pmax  != NULL) *pmax = max;
    if(pmax2 != NULL) *pmax2 = max2;
}完整测试程序:
#include <assert.h>
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>

struct Num
{
    int num;
    struct Num *next;
};

void linkedListMax2(struct Num *list, int *pmax, int *pmax2)
{
    assert(pmax != NULL && pmax2 != NULL);  // assert() in <assert.h>
    int max  = INT_MIN;  // INT_MIN in <limits.h>
    int max2 = INT_MIN;

    struct Num *cur = list;
    while(cur) {
        if( cur->num > max ) {
            max2 = max;
            max = cur->num;
        }
        else if( cur->num > max2 ) { // max2 < cur->num <= max
            max2 = cur->num;
        }
        cur = cur->next;
    }
    if(pmax  != NULL) *pmax = max;
    if(pmax2 != NULL) *pmax2 = max2;
}

// 
// int iarray[] = {5, 4, 3, 2, 1};
int iarray[] = {6, 7, 8, 9, 10};
#define ARRAYSIZE(a) sizeof(a)/sizeof(a[0])

struct Num *list = NULL;

void printList(struct Num *list)
{
while(list) {
printf("%d ", list->num);
list = list->next;
}
}

int main(int argc, char *argv[])
{
int i, max, max2;

for(i = ARRAYSIZE(iarray)-1; i >= 0 ; i--) {
struct Num *pnew = (struct Num*)malloc(sizeof(struct Num));
pnew->num = iarray[i];

pnew->next = list;
list = pnew;
}
printList(list);

linkedListMax2(list, &max, &max2);

printf("\nmax: %d, max2: %d\n", max, max2);

return 0;
}
全部回答
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东创建国汽车销售服务公司哈飞汽车普洱专营店
(9分)人体在特殊情况下,会产生针对自身细
牙首的意思是什么啊?知道的请说下!
吹面不寒杨柳风中的杨柳风是什么意思
财务软件里面为什么把制造费用归属在生产成本
东风合运普洱销售服务店地址有知道的么?有点
大呲花中唱社会嗑的女孩叫什么
个人学历中英文N/A什么意思?
明锦汽车销售有限公司地址在哪,我要去那里办
开道的意思是什么啊?知道的请说下!
男朋友说我像只小猫! 求解释!=_=
在金玉车站怎么去揭阳西湖还有万竹园
重庆哪里有那种单独房间的温泉,只有两三个人
感君千金意,愧屋倾城色
过年想送表妹一把小提琴,她学小提琴有七八年
推荐资讯
手机为什么不能更换主题
四川古蔺喜郎春酒业有限公司
辛俸的意思是什么啊?知道的请说下!
刚到新公司2个月不到,结婚要不要请领导?
唐正东与奥得捷大打出手!你站在哪一边?
好过的意思是什么啊?知道的请说下!
【土地长笋节节高】竹笋出土节节高造句子
讯杖的意思是什么啊?知道的请说下!
岁月焉容虚负山林可共胜游什么意思
千元机里哪种拍照效果好一些
【wings of happinese】
很喜欢一个女孩,表白了!过了好多天后,他突
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?