库存系统方法

时间:2016-03-28 13:57:05

标签: c struct linked-list

所以我正在创建一个控制库存的系统。我有一个文本文件,其中包含清单中的所有项目。

为:

{component, stock code, count, price}

我正在创建一个表示股票的结构(这是在头文件中完成的):

typedef struct StockItem {
    char *componentType;
    char *stockCode;
    int numOfItems
    int price;
} StockItem;

我想要一个结构来控制整个库存作为链表,我想知道如何做到这一点,所以它会有一个StockItems的集合。 (这是一个很好的方法吗?)

还有一个问题,将结构作为大写字母是否常规?

编辑:

typedef struct inventory {
    struct StockItem item;
    struct inventory *next;
}inventory;

inventory *pFirstNode = NULL;
inventory *pLastNode = NULL;

void createNewList(struct StockItem *item){
    // Set aside enough space in memory for this struct

    inventory *pNewStruct = (inventory*) malloc(sizeof(inventory));

    // We can assign the value directly for the structs
    // reference for the next struct in the linked list
    pNewStruct->next = NULL;

    printf("Enter Product Name: ");

    // The & is needed only because scanf() is used
    pNewStruct->item = item;

    // When the first struct is created all of the following
    // refer to the same struct
    pFirstNode = pLastNode = pNewStruct;

}

1 个答案:

答案 0 :(得分:0)

如果链接列表适用于您的情况,实际上取决于您希望如何访问您的广告资源。如果你打算只按顺序浏览它,那么链表是好的。如果您将索引存储到特定库存项目,然后从列表中检索该项目,那将会非常缓慢。在这种情况下,带有数组的数据结构(例如std :: vector)更好。但所有这些还取决于您拥有的数据量。通过仅包含100个元素的索引查询链表是没有错的。有关如何创建集合的具体问题,您是否仅限于c,还是可以使用c ++? std命名空间有很多有用的集合,包括一个链表的实现和一个基本上是一个数组的向量,它可以动态调整大小。

由于您希望将自己限制为c,因此您必须自己编写列表实现。它没有什么我会推荐仍在学习的somone。实施一个体面的清单真的很难。但如果你真的想,this可能是一个好的开始。您还可以了解链接列表的工作原理,考虑到许多人会错过链接列表,并对以后的糟糕表现感到疑惑,这是一件好事。

让我们以上面的链接为例。他们定义了一个节点struct:

typedef struct node {
    int val;
    struct node * next;
} node_t;

字段“val”是int类型。在您的情况下,这将是您要存储在列表中的项目类型。它将是StockItem或指向StockItem的指针,具体取决于您希望如何管理内存。如果要将StockItem添加到列表中,请将其包装到节点中,并将指向该节点的指针分配给上一节点的“next”字段。在我提供的链接中,一切都得到了很好的解释。

到目前为止你得到的很好。接下来,要在列表中添加节点,您应该在lastNode中设置lastNode指针和下一个指针:

pLastNode->next = pNewStruct;
pLastNode = pNewStruct;