私はこの基本的なリンクリスト構造を持っています:
struct node
{
char *name;
float salary;
struct node *nextNode;
};
struct list
{
struct node *firstNode;
};
これは私のinsert
機能です:
void insert(struct list *pList, char *newName, float newSalary)
{
struct node *newNode;
newNode = (struct node *)malloc(sizeof(struct node));
newNode->salary = newSalary;
newNode->name = newName;
if (pList->firstNode == NULL)
{
pList->firstNode = newNode;
newNode->nextNode = NULL;
}
else
{
struct node *pos = pList->firstNode;
for(; pos->nextNode; pos = pos->nextNode);
pos->nextNode = newNode;
newNode->nextNode = NULL;
}
}
これは私のmain()
です:
int main(void)
{
struct list lst;
struct list *plst = &lst;
createList(plst); //initializes the list
char name1[] = "John";
char name2[] = "Thomas";
char name3[] = "Albert";
insert(plst, name1, 1000);
insert(plst, name2, 2000);
insert(plst, name3, 3000);
}
char配列の転送を除いて、すべてがうまく機能します。char配列を渡す最良の方法は、char配列の最初のcharへのポインターを渡すことだと思いましたが、何が間違っていたのかわかりません。
また、最初に new を作成してから、これへのnode
ポインタを関数に渡す方がよいでしょうか? それは似ていますが、おそらくより受け入れられますか?node
insert