現在、二重リンク リストを使用して一部のデータを並べ替えようとしています。指定されたデータで新しいノードを作成できません。以下は私に与えられたコードです:
#ifndef LIST_H_
#define List_H_
#define MAX_SYMBOL_LENGTH 7
struct order {
int id;
char symbol[MAX_SYMBOL_LENGTH];
char side;
int quantity;
double price;
};
typedef struct order* OrderPtr;
typedef struct onode* NodePtr;
struct onode {
OrderPtr data;
NodePtr next;
NodePtr prev;
};
これは、list.h をヘッダーとして使用して記述したコードです。一見クラッシュし続けるコードは次のとおりです。
#include "list.h"
NodePtr newNode(OrderPtr data){
NodePtr node = (NodePtr)malloc(sizeof(NodePtr));
//node->data = (NodePtr)malloc(sizeof(OrderPtr));
//*node->data = *data;
node->data = data;//This is the one I am having problems with
node->next = NULL;
node->prev = NULL;
return node;
}
正常にコンパイルされますが、オンライン採点者に提出しようとすると、動作しないと表示されます。これが私の思考プロセスです。
- NodePtr のメモリを作成します。
- NodePtr->data 用のメモリを作成します。
次に、関数から渡されたデータの値を Node->Ptr の値に代入します。しかし、NodePtr->data にメモリを割り当てる方法がわかりません。