C語言單鏈表從尾到頭遞回輸出。可是遞回那一步總是報錯,好像是定義有問題?
#include<stdio.h>
#include<stdlib.h>
struct node
{ char num[20];
struct node * link;
};
typedef node NODE;
void main()
{
NODE *head ;
NODE *p;
p=(NODE*)malloc(sizeof(NODE));
p->link=NULL;
head=p;
printf("please enter 5 numbers separated by new lines:\n");
int create(NODE *head,int n);
create(head,5);
printf("the numbers output:\n");
int output(NODE *head);
output(head);
}
int create(NODE *head,int n)
{
NODE *p;
for(int i=0;i<n;i++)
{ p=(NODE*)malloc(sizeof(NODE)) ;
gets(p->num);
head->link=p;
head=p;
}
return 0;
}
int output(NODE *head)
{
NODE *p;
p=head->link;
if(p!=NULL && p->link!=NULL)
{
output(NODE* p->link);
}
if(p!=NULL)
puts(p->num);
return 0;
}
-------------------Configuration: work4 - Win32 Debug--------------------
Compiling...
work4.cpp
F:\Download\work4.cpp(42) : error C2275: 'NODE' : illegal use of this type as an expression
F:\Download\work4.cpp(7) : see declaration of 'NODE'
?? cl.exe ???.
work4.obj - 1 error(s), 0 warning(s)
uj5u.com熱心網友回復:
typedef node NODE;改成typedef struct node NODE;
uj5u.com熱心網友回復:
#include<stdio.h>
#include<stdlib.h>
struct node
{
char num[20];
struct node * link;
};
//typedef node NODE;
typedef struct node NODE;
int create(NODE *head,int n);
int output(NODE *head);
void show(NODE *phead);
//void main()
int main()
{
NODE *head ;
NODE *p;
p=(NODE*)malloc(sizeof(NODE));
p->link=NULL;
head=p;
printf("please enter 5 numbers separated by new lines:\n");
//int create(NODE *head,int n);
create(head,5);
//show(head);
printf("the numbers output:\n");
//int output(NODE *head);
output(head->link);
}
int create(NODE *head,int n)
{
NODE *p, *prev;
prev = head;
for(int i=0;i<n;i++)
{
p=(NODE*)malloc(sizeof(NODE)) ;
fgets(p->num, 20, stdin);
prev->link = p;
prev = p;
}
return 0;
}
void show(NODE *phead)
{
NODE *p = phead->link;
while (p) {
printf("%s\n", p->num);
p = p->link;
}
}
int output(NODE *head)
{
#if 1
if (!head)
return 0;
output(head->link);
puts(head->num);
#else
if(p!=NULL && p->link!=NULL)
{
//output(NODE* p->link);
output(p->link);
}
if(p!=NULL)
puts(p->num);
#endif
return 0;
}
供參考~
有問題的地方都做了修改,供參考~
uj5u.com熱心網友回復:
這個沒報錯,但是不能輸出。還有show函式是干什么用的呀,是輸出一遍開始輸入的字符的嗎?
uj5u.com熱心網友回復:
謝謝,但是把下面的也改成 output(p->link); 就不報錯了,但是不能輸出了呢?
uj5u.com熱心網友回復:
測驗沒問題才發給你的,你確定輸入了5個嗎?
uj5u.com熱心網友回復:
#include<stdio.h>
#include<stdlib.h>
struct node
{
char num[20];
struct node * link;
};
//typedef node NODE;
typedef struct node NODE;
int create(NODE *head,int n);
int output(NODE *head);
void show(NODE *phead);
//void main()
int main()
{
NODE *head ;
NODE *p;
p=(NODE*)malloc(sizeof(NODE));
p->link=NULL;
head=p;
printf("please enter 5 numbers separated by new lines:\n");
//int create(NODE *head,int n);
create(head,5);
//show(head);
printf("the numbers output:\n");
//int output(NODE *head);
output(head->link);
}
int create(NODE *head,int n)
{
NODE *p, *prev;
prev = head;
for(int i=0;i<n;i++)
{
p=(NODE*)malloc(sizeof(NODE)) ;
fgets(p->num, 20, stdin);
prev->link = p;
prev = p;
}
return 0;
}
void show(NODE *phead)
{
NODE *p = phead->link;
while (p) {
printf("%s\n", p->num);
p = p->link;
}
}
int output(NODE *head)
{
#if 1
if (!head)
return 0;
output(head->link);
puts(head->num);
#else
if(p!=NULL && p->link!=NULL)
{
//output(NODE* p->link);
output(p->link);
}
if(p!=NULL)
puts(p->num);
#endif
return 0;
}
供參考~
有問題的地方都做了修改,供參考~
這個沒報錯,但是不能輸出。還有show函式是干什么用的呀,是輸出一遍開始輸入的字符的嗎?
測驗沒問題才發給你的,你確定輸入了5個嗎?
是五個。我又看了一遍,發現初始出錯的其實是輸入的部分,已經改好啦,謝謝~~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/100369.html
標籤:C語言
