所以我正在创建一个控制库存的系统。我有一个文本文件,其中包含清单中的所有项目。
为:
{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;
}
答案 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;