回 帖 发 新 帖 刷新版面

主题:出错了!!请高手指教

代码如下:
#include <stdio.h>
#include <stdlib.h>

typedef struct student 
{
    long stuid;
    char name[10];
    long phoneNo;
    struct student *next; 
}LStu,*Stulist;

//建立一个学生信息
Stulist creatStu()
{
    Stulist s;
    s = (Stulist)malloc ( sizeof(LStu) );
    if(!s)
    {
        printf("存储分配失败!\n");
        exit(0);
    }
    printf("请输入学生的学号:\n");
    scanf("%ld",&(s->stuid));
    printf("请输入学生的姓名:\n");
    scanf("%s",s->name);
    printf("请输入学生的电话号码:\n");
    scanf("%ld",&(s->phoneNo));
    
//    printf("%s\n",s->name);
//    printf("%ld\n",s->phoneNo);
//    printf("%ld\n",s->stuid);

    return s;
}

//初始化链表
void initList(Stulist *L)

    Stulist s;
    (*L) = NULL;
    s = (Stulist)malloc ( sizeof(LStu) );
    s->next = (*L);
    (*L) = s;
    printf("链表已创建...\n");
}

//创建链表
void createList(Stulist *L)
{
    int i = 1;
    int j = 1;
    initList(L);
    printf("现在需要添加学生信息吗?(1.是/0.否)\n");
    scanf("%d",&i);
    while(i)
    {
        insertElement((*L),j);
        j++;
        printf("继续吗?(1.是/0.否)\n");    
        scanf("%d",&i);
    }
}

//向链表中插入元素
void insertElement(Stulist L,int i)
{///////////////////////////////////////////报告说有错
    Stulist p,s;
    int j = 0;
    p = L;
    s = creatStu();
    while (p && j < i-1) 
    { 
        p = p->next;  
        ++j; 
    }
    if(!p||j>i-1)
    {
        printf("插入位置有错!\n");
        return;
    }
    s->next = p->next;
    p->next = s;
//    return 1;    
}



//主函数
void main()
{
    int i = 1,location;
    Stulist L;
    while(i)
    { 
        printf("请选择:\n");
        printf("1.建立链表  2.删除元素  3.插入元素  4.输出元素 5.显示全部  0.退出\n");
        scanf("%d",&i);
        switch(i)
        { 
           case 1:  createList(&L);
                    break;
           case 2:  printf("请输入要删除元素的位置.\n");
                    scanf("%d",&location);
                    deleteElementAt(L,location);
                    break;
           case 3:  printf("请输入要插入的位置.\n");
                    scanf("%d",&location);
                    if(insertElement(L,location))
                        printf("插入已完成\n");
                    break;
           case 4: printf("请输入要输出元素的位置.\n");
                   scanf("%d",&location);
                   getElementAt(L,location);
                   break;
           case 5: showAll(L); break;
        }
    }
}

错误提示:
c:\documents and settings\owner\桌面\program\数据结构\错误\error2.c(66) : error C2371: 'insertElement' : redefinition; different basic types

请问是什么意思,怎样改啊

回复列表 (共3个回复)

沙发

//向链表中插入元素
void insertElement(Stulist L,int i)
{///////////////////////////////////////////报告说有错
    Stulist p,s;
    int j = 0;
    p = L;
    s = creatStu();
    while (p && j < i-1) 
    { 
        p = p->next;  
        ++j; 
    }
    if(!p||j>i-1)
    {
        printf("插入位置有错!\n");
        return;
    }
    s->next = p->next;
    p->next = s;
//    return 1;    
}


函数类型不同。。
这个函数错了。
你定义的是void
而返回int返回值。
把返回值return取了。

板凳

或者把void 改为 int 也可以

3 楼


不对啊,我把两个return都注释掉再编译也都报这个错

我来回复

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