链表中的结构

时间:2013-10-16 15:06:58

标签: c++ linked-list structure

我有一个在链表中实现结构的程序。我在main中得到一个错误,说“无效使用struct Node :: date”。我弄不清楚。我的教授也不知道。任何帮助将得到赞赏以及解释,所以我知道它为什么这样做。

#include <iostream>
#include <cstddef>
#include <string>
using namespace std;

struct date
{
   int day;
   int month;
   int year;
};

struct Node
{
    string item;
    int count;
    Node *link;
    struct date;
};

typedef Node* NodePtr;
void head_insert(NodePtr& head, string an_item, int a_number, date a_date);
void show_list(NodePtr& head);

int main()
{
    date tea_date, jam_date, rolls_date;
    rolls_date.day = 8;
    rolls_date.month = 10;
    rolls_date.year = 2003;

    jam_date.day = 9;
    jam_date.month = 12;
    jam_date.year = 2003;

    tea_date.day = 1;
    tea_date.month = 1;
    tea_date.year = 2010;

    NodePtr head = NULL;
    head_insert(head, "Tea", 2, tea_date);
    head_insert(head, "Jam", 3, jam_date);
    head_insert(head, "Rolls", 10, rolls_date);

    show_list(head);
    system("PAUSE");
    return 0;
}

void head_insert(NodePtr& head, string an_item, int a_number, date a_date)
{
    NodePtr temp_ptr;

    temp_ptr = new Node;
    temp_ptr-> item = an_item;
    temp_ptr-> count = a_number;
    temp_ptr-> date = a_date;

    temp_ptr->link = head;
    head = temp_ptr;
}

void show_list(NodePtr& head)
{
    NodePtr here = head;

    while (here != NULL)
    {
        cout << here-> item << "\t";
        cout << here-> count << endl;

        here = here->link;
    }
}

1 个答案:

答案 0 :(得分:3)

这只是struct date的声明:

struct date;

您需要提供Node date个实例:

struct Node
{
  string item;
  int count;
  Node *link;
  date date_; // Node has a date called date_
};