2016-03-28 12 views
-1

在庫を管理するシステムを作成しています。私は在庫のすべての項目を含むテキストファイルを持っています。在庫システムのアプローチ

として:私は(これは、ヘッダーファイルで行われます)の株式を表現する構造体を作成してい

{component, stock code, count, price} 

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

は、私は全体を制御する構造体を持つようにしたいですリンクされたリストとしての在庫は、私はそれがStockItemsのコレクションを持っているようにそれをする方法を疑問に思っていた。 (これは良い方法でしょうか?)

さらにもう1つの質問は、構造体を大文字にするかどうかですか?

EDIT:リンクリストは、あなたのケースに適している場合

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

は最初 'int'メンバーを入れて、そして最後は'のchar * 'を残します。これは、構造体のサイズに役立ちますし、それは梱包されています...現在のサイズは(variableByteNumber + 8)です。コンベンションに関しては、それはあなたのコードです。しかし、 'struct'はデータ型なので、小文字にすることをお勧めします:/ – Shark

+0

StockItem内では何ですか?なぜこの@シャークですか、私はそれを小文字にします、私の家庭教師は首都でそれらを行いますが、私が見たすべてのチュートリアルは下がっています –

+0

なぜですか?大文字は、あなた次第です。あなたのコード、あなたの大会。しかし、 'struct'はクラスではないので、見渡しながらそれらを混ぜる必要はありません。しかし、あなたのチュートリアルがあなたに伝えるようにあなたは非常に自由ですが、あなたがオフィスに入るとあなたの心を変えることを検討してください;) – Shark

答えて

0

本当にあなたのインベントリにアクセスする方法によって異なります。それを順番に調べるだけなら、リンクされたリストは良いです。インデックスを特定のインベントリアイテムに格納して後でそのアイテムをリストから取り出すと、それは非常に遅くなるでしょう。この場合、配列(std :: vectorなど)を持つデータ構造が優れています。しかし、それはあなたが持っているデータの量によっても異なります。 100要素しかない索引でリンクリストを照会することは間違っていません。コレクションを作成する方法についての具体的な質問は、cに限定されていますか、またはC++を使用できますか? std名前空間には、リンクリストの実装や、基本的には配列で、動的にサイズを変更するベクトルなど、多くの便利なコレクションがあります。

自分自身をcに制限したいので、リスト実装を自分で書く必要があります。私はそれでもまだ学んでいるsomoneをお勧めします。まともなリストを実装することは本当に難しいです。しかし、本当にしたい場合は、this良いスタートかもしれません。あなたはまた、リンクされたリストがどのようにボンネットの下で動作するかを学びます。

例として上記のリンクを参照してください。彼らはノード構造体を定義しました:

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

フィールド "val"はint型です。あなたの場合、これはあなたのリストに保存したいアイテムのタイプになります。あなたのメモリをどのように管理するかによって、StockItemまたはStockItemへのポインタになります。 StockItemをリストに追加する場合は、ノードにラップし、そのノードへのポインタを前のノードの「次の」フィールドに割り当てます。私が提供したリンクでは、すべてが本当によく説明されています。

あなたが今までに得たものは大丈夫です。次に、あなたのリストにノードを追加するために、あなたはlastNodeでlastNodeポインタと次のポインタを設定する必要があります。

pLastNode->next = pNewStruct; 
pLastNode = pNewStruct; 
+1

Keyに 'stockCode'を使用する単純なHashMapも便利です。 – Shark

+0

私はCを学んでいます。はい、私はそれに限定しています –

+0

あなたの編集のおかげで、私はLinkedlistsを理解し、既にLinkedListをCで作成しました。問題は実際にリンクされたリストを作成して、ストックアイテムを含むようにすることです。構造体などを渡すでしょうか? –

関連する問題