我试图在添加节点后打印链接列表。我有一个虚拟节点启动列表打印链接列表无限循环C
Node **nodeArray;
nodeArray = malloc(10 * sizeof(Node *));
int i;
for (i = 0; i < 10; i++) {
nodeArray[i] = malloc(sizeof(Node));
}
if (userChoice == 'a')
add(&nodeArray, setNumber);
void add(Node ***nodeArray, int setNumber) {
char userString[5];
printf("Please enter some data: ");
scanf("%s", userString);
Node *head = *nodeArray[setNumber]; /* head pointer to first element of array (dummy) */
Node *newNode = malloc(sizeof(Node)); /* new node to be added to array */
strncpy(newNode->data, userString, sizeof(newNode->data)); /* copies string entered by the user to data field of new node */
newNode->next = NULL; /* initializes next field of new node to NULL */
Node *tmp = head; /* pointer to head of list */
while (!tmp->next) {
tmp->next = newNode; /* inserts new node into array */
tmp = newNode; /* points head to newly added node */
}
tmp = head; /* points tmp back to head of list */
printf("List is: ");
while (tmp->next) {
printf("%s", (tmp->data));
tmp = tmp->next;
}
}
但是当我打印,我得到一个无限循环打印出新加入的节点的数据字段。可怕的链接列表....我做错了什么?
请提供[MCVE。不需要像故事那样讲它。只需介绍MCVE,因为我们可以在没有块解释的情况下为自己读取这样简单的代码。而且所有功能都在一个模块中,因此如果需要,任何人都可以更容易地进行复制。 – kaylum
什么是'nodeArray'?你的意思是'Node * head = * Node [setNumber]; '? – Sanich
有关详细信息,请参阅编辑。 – namarino