为什么同样的代码在vs2022报错,vc6.0却可以


#include <stdlib.h> 
#include <string.h> 
#include <stdio.h> 
struct empNode{                /* 职工结点 */ 
    char name[20];            /* 姓名 */ 
    int salary;                /* 基本工资 */ 
    struct emp_node *next;    /* 结点指针 */ 
}; 
int size=sizeof(struct empNode); /* 结点大小 */ 
int main() 
{ 
    struct empNode *list,*p=NULL,*q=NULL,*tail=NULL; 
    char name[20]; 
    int salary,n=0; /* n: 计数器赋 0 */ 
    struct empNode * maxList(struct emp_node *list); /* 函数声明 */ 
 
    /* 建立链表 list */ 
    list=NULL; /* 设置链表为空表 */ 
    printf("输入姓名和工资(工资为 0,结束输入):\n");
    scanf("%s%d",name,&salary); 
    while(salary!=0)
    { 
        n++; /* 计数器加 1 */ 
        p=(struct empNnode *)malloc(size); /* 申请新结点 */ 
        strcpy(p->name,name);p->salary=salary;p->next=NULL; 
        if(n==1)list=p; else tail->next=p; /* 链入新结点 */ 
        tail=p; /* 尾指针后移 */ 
        scanf("%s%d",name,&salary); 
    } 
 
    /* 在两条星线间填入相应代码,调用 maxNode()函数查找链表中最高工资结点 */ 
    /**********************************************************************/ 
    
    q=maxList(list);

    /**********************************************************************/ 
 
    /* 输出查找结果 */ 
    printf("最高工资的职工信息:\n"); 
    printf("姓名:%s 工资:%d\n",q->name,q->salary); 
    return 0; 
}

struct empNode * maxList(struct empNode *list) /* 函数定义 */ 
{ 
    struct empNode *max=list,*p=list; /* max:指向最高工资结点  */ 

    /* 在两条星线间填入相应代码,查找链表中最高工资的职工信息   */ 
    /************************************************************/ 
    while(p!=NULL)    {
        if(p->salary>max->salary)
            max=p;
        p=p->next;
    }
    /************************************************************/ 
    return max; 
}

帮你修改好了


#include <stdlib.h>
#include <string.h>
#include <stdio.h>

struct empNode
{                         /* 职工结点 */
    char name[20];        /* 姓名 */
    int salary;           /* 基本工资 */
    struct empNode *next; /* 结点指针 */
};

struct empNode *maxList(struct empNode *list); /* 函数声明 */
void destroy(struct empNode *list);

int main()
{
    struct empNode *list, *p = NULL, *q = NULL, *tail = NULL;
    char name[20];
    int salary, n = 0; /* n: 计数器赋 0 */

    /* 建立链表 list */
    list = NULL; /* 设置链表为空表 */
    printf("输入姓名和工资(工资为 0,结束输入):\n");
    scanf("%s%d", name, &salary);
    while (salary != 0)
    {
        n++;                                                  /* 计数器加 1 */
        p = (struct empNode *)malloc(sizeof(struct empNode)); /* 申请新结点 */
        strcpy(p->name, name);
        p->salary = salary;
        p->next = NULL;
        if (n == 1)
            list = p;
        else
            tail->next = p; /* 链入新结点 */
        tail = p;           /* 尾指针后移 */
        scanf("%s%d", name, &salary);
    }

    /* 在两条星线间填入相应代码,调用 maxNode()函数查找链表中最高工资结点 */
    /**********************************************************************/

    q = maxList(list);

    /**********************************************************************/

    /* 输出查找结果 */
    printf("最高工资的职工信息:\n");
    printf("姓名:%s 工资:%d\n", q->name, q->salary);
    destroy(list);
    return 0;
}

struct empNode *maxList(struct empNode *list) /* 函数定义 */
{
    struct empNode *max = list, *p = list; /* max:指向最高工资结点  */

    /* 在两条星线间填入相应代码,查找链表中最高工资的职工信息   */
    /************************************************************/
    while (p != NULL)
    {
        if (p->salary > max->salary)
            max = p;
        p = p->next;
    }
    /************************************************************/
    return max;
}

void destroy(struct empNode *list)
{
    while (list)
    {
        struct empNode *p = list;
        list = list->next;
        free(p);
    }
}