数据结构基本程序

时间:2014-08-12 17:09:23

标签: c data-structures

#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行的“未知类型节点”。为什么? 我无法纠正错误。我最近刚刚启动了数据结构,这只是一个节点数据插入程序。

4 个答案:

答案 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

请按照此方法最小化代码中的错误