#include <stdio.h>
#include <stdlib.h>
void insertion(int X,Node *l);
void display( Node *y);
void display(Node *y)
{
printf("\n Your Node Contains \n Data : %d \t Pointer : %d \n ",y->data,y->sp);
}
void insertion(int X,Node *l)
{
l->data=X;
l->sp=NULL;
}
typedef struct
{
int data;
int *sp;
}Node;
int main(void)
{
int kl; Node *j;
printf("\n Enter the data you like to put :");
scanf("%d",&kl);
insertion(kl,j);
display(j);
return 0;
}
编译过程中出现错误 - 第3,4,5,9行的“未知类型节点”。为什么? 我无法纠正错误。我最近刚刚启动了数据结构,这只是一个节点数据插入程序。
答案 0 :(得分:1)
修复非常简单,在尝试使用之前必须先键入你的struct。
#include<stdio.h>
#include<stdlib.h>
typedef struct // You cant use the Node keyword before this
{
int data;
int *sp;
}Node;
void insertion(int X,Node *l);
void display( Node *y);
void display(Node *y)
{
printf("\n Your Node Contains \n Data : %d \t Pointer : %d \n ",y->data,y->sp);
}
void insertion(int X,Node *l)
{
l->data=X;
l->sp=NULL;
}
int main(void)
{
int kl; Node *j;
printf("\n Enter the data you like to put :");
scanf("%d",&kl);
insertion(kl,j);
display(j);
return 0;
}
答案 1 :(得分:0)
当编译器尝试编译行
时void insertion(int X,Node *l);
它对Node
一无所知。您必须在该行之前移动Node
的声明。
移动线
typedef struct
{
int data;
int *sp;
}Node;
在该行之前。
答案 2 :(得分:0)
如果您使用Node * j作为链接列表类型,那么您需要为其分配内存,然后只有您可以为其分配任何值。否则它只是一个指向其他变量的指针。
答案 3 :(得分:0)
使用数据结构的首要原则是 定义程序顶部的数据结构 。然后只能在程序的任何位置使用它。示例程序如下:
using namespace std;
#include<iostream>
struct *node{
int data;
node *link;}top; //top object created
请按照此方法最小化代码中的错误