回 帖 发 新 帖 刷新版面

主题:结构体与链表问题,以及如何引用结构体中结构体的元素?

日期和链表结点的结构体类型定义如下:
    struct date{int year; int month; int day;}; //日期结构体类型
    struct studentNode    //链表结点的结构体类型
    {  char name[10];     //人名
       struct date birth; //出生日期
       struct studentNode *next
    };
结构体链表L存储了n个人的名字和出生日期。写一函数,求这n个人中年龄
最大(即出生日期最小)者的名字。
要求实现下列函数:
char *oldest(struct studentNode *L)
                           /* 若L是空表,则返回空指针null否则返回表中年龄最大者的名字*/

回复列表 (共3个回复)

沙发

我怎么觉得这T这么熟悉呢。、。有人发过帖吧、、

板凳

char *oldest(struct studentNode *L)
{
     if (L == NULL) return NULL;
     struct studentNode *p,*now=L;
     p = now;
     while(now->next != NULL)
     {
        now = now->next;
        if(p->birth.year > now->birth.year||
           p->birth.year == now->birth.year &&
           p->birth.month > now->birth.month ||
           .......
           )
           p = now;
       }
       return p->name;
}

3 楼

其实判断日期大小可以不用&& ||这两个运算的,只要是合理且平常用得到的日期,它的月份肯定小于16(4bits),日期小于32(5bits),因此只要用   年份差*32*16    月份差*16     日期差(可以用移位来代替乘法)的值和0比较大小就行了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册