ST creat_list()这一行显示error: conflicting types for 'creat_list'|怎么办?找半天没找到0.0
求解答+.+
#include
#include
typedef struct Student{
struct Student* next;
int cnt;
}st,*ST;
ST creat_lsit();
void traverse_list();
int main(void){
ST students;
students = creat_list();
traverse_list(students);
return 0;
}
ST creat_list(){
int len;
int val;
printf("输入链表长度");
scanf("%d",&len);
ST pHead;
pHead = (ST)malloc(sizeof(st));
ST pTail;
pHead = pTail;
if(pHead = NULL){
printf("false1!");
exit(-1);
}
pTail->next = NULL;
for(int i=0;iscanf("%d",&val);
ST pNew = (ST)malloc(sizeof(st));
if(pNew = NULL){
printf("false2!");
exit(-1);
}
else{
pNew->cnt = val;
pTail->next = pNew;
pNew->next = NULL;
pTail = pNew;
}
}
return pHead;
}
void traverse_list(ST pHead){
while(pHead->next != NULL){
printf("%d ",pHead->cnt);
pHead = pHead->next;
}
}
修改如下,供参考:
#include<stdio.h>
#include<malloc.h>
typedef struct Student{
struct Student* next;
int cnt;
}st,*ST;
ST creat_list();
void traverse_list(ST pHead);
//void traverse_list(); 修改
int main(void)
{
ST students;
students = creat_list();
traverse_list(students);
return 0;
}
ST creat_list()
{
int len;
int val;
printf("输入链表长度");
scanf("%d",&len);
ST pHead;
pHead = (ST)malloc(sizeof(st));
ST pTail;
pHead = pTail;
if(pHead == NULL){ //if(pHead = NULL) 修改
printf("false1!");
exit(-1);
}
pTail->next = NULL;
for(int i=0;i<len;i++){
scanf("%d",&val);
ST pNew = (ST)malloc(sizeof(st));
if(pNew == NULL){ // if(pNew = NULL) 修改
printf("false2!");
exit(-1);
}
else{
pNew->cnt = val;
pTail->next = pNew;
pNew->next = NULL;
pTail = pNew;
}
}
return pHead;
}
void traverse_list(ST pHead){
while(pHead->next != NULL){
printf("%d ",pHead->next->cnt);
//printf("%d ",pHead->cnt); 修改
pHead = pHead->next;
}
}
根本原因在这里:
if(pHead = NULL){
printf("false1!");
exit(-1);
}
注意了,你的if 里面是赋值运算,返回为 true,所以,直接 exit了