链表中的多个数据?

时间:2013-11-16 12:03:28

标签: c++ linked-list

我正在完成我的任务。 转让问题说明: “获取用户关于交货记录的输入,该交货记录包括交货记录ID,供应商名称,订单日期,交货日期,每种类型纸张的数量以及指示交货,待处理或取消的状态。 “

“您要实现一个链接列表来保存交付记录。”

如何在链表类中保留多个数据?我是否在每个节点中保留多个数据? 像这样:

struct node
{
char id[10];
char name[20];
char orderDate[20];
char deliveryDate[20];
int quantity;
char status[10];

node *next;
};

这会有用吗?

EDITED 所以我的班级会是这样的吗?

class linkedlist{
   //public functions
   private:
   struct node;
   typedef node* nodeptr;
   struct node
   {
   char id[10];
   char name[20];
   char orderDate[20];
   char deliveryDate[20];
   int quantity;
   char status[10];

   node *next;
   };

};

正确?

3 个答案:

答案 0 :(得分:0)

是的,您在正确的轨道上将多个数据放在每个节点中,但我对您的节点结构有一些提及:

  1. 如果id是数值,则它应该是整数数据类型,如int。
  2. 由于日期有点难以处理并解析为字符串,我会使用日期结构:

    struct date{
        int day;
        int month;
        int year;
    };
    
  3. 此外,状态应该是bool,更合适的名称将是交付。在这种情况下,交付变量的真值意味着它已经交付,而假值意味着待定。

  4. 确保供应商名称的20个字符足够。

答案 1 :(得分:0)

是啊..您也可以编写课程并将该所有信息作为该课程中的数据成员提及。编写类后,您可以创建类的对象,并将此对象用作链接列表中的一个节点。你的要求是c ++还是c?

答案 2 :(得分:0)

我同意Paul92关于您选择的数据类型。

将节点数据与存储结构分开也是一种好习惯。您的结构称为节点,包含有关传递记录的信息以及指向下一个devilvery记录的指针。使用组合分离关注点的更清晰的实现可能看起来像

struct DeliveryRecord {
    char id[10];
    char name[20];
    char orderDate[20];
    char deliveryDate[20];
    int quantity;
    char status[10];
};

template<typename T>
struct ListNode {
    T data;
    ListNode* next;
};

如果你更喜欢继承,你可以使用像

这样的ListNode类
template<typename T>
struct ListNode : public T {
    ListNode* next;
};
typedef ListNode<DeliveryRecord> DeliveryRecordListNode;

这样,存储记录的方式可能会有所不同,而不会更改记录结构的外观。下一个任务可能会说你应该将它们存储在树形结构中。这不会改变DeliveryRecord结构。您只需要创建一个TreeNode类模板; - )