私は学校のプロジェクトに取り組んでおり、二重にリンクされたリストと構造体をもう少しよく理解しようとしています。現在、新しいリンクリストを作成する関数を実装しようとしています。そこから仕事ができると思うからです。
typedef struct ListItem {
struct ListItem *previousItem; //pointer to previous item, NULL if first list item
struct ListItem *nextItem; //pointer to next item, NULL if first list item
void *data; //pointer to data
これは、作成しようとしている双方向リンク リストの構造体です。「void *」は何かへのポインターを保持できること、またリスト項目に格納されているデータを割り当てる必要があることも知っています。
/**
* This function starts a new linked list. Given an allocated pointer to data it will return a
* pointer for a malloc()ed ListItem struct. If malloc() fails for any reason, then this function
* returns NULL otherwise it should return a pointer to this new list item. data can be NULL.
*
* @param data The data to be stored in the first ListItem in this new list. Can be any valid
* pointer value.
* @return A pointer to the malloc()'d ListItem. May be NULL if an error occured.
*/
ListItem *NewList(void *data);
私は malloc() が使用するために十分なメモリをスタックに割り当てることを知っているので、私の関数では malloc() *previousItem、*nextItem、および *data (6 バイトになるでしょうか?) を実行する必要があると思います。関数を実装するには、ListItem 構造体をコピーするだけですか? リスト内の唯一の項目であるため、前の AND 次の項目は NULL ポインターになり、*data が入力になると思います。誰かが私のコードがどのように見えるかを教えてくれますか?