【发布时间】:2014-10-26 03:28:37
【问题描述】:
我对编程很陌生。尝试编写一个函数来接收列表的头部 + 要插入的数据 - 并传回列表的新头部。我已经通过在列表头部添加一个元素做了很多工作,但由于某种原因,我无法理解这种细微的差异。
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct node_{
int data;
struct node_ *next;
} Queue;
int main(void){
Queue* queue = NULL;
queue = enqueue(queue, 1);
assert(queue->next == NULL);
assert(queue->data == 1);
queue = enqueue(queue, 2);
assert(queue->data == 1);
assert(queue->next != NULL);
assert(queue->next->data == 2);
free(queue->next);
free(queue);
return 0;
}
Queue *enqueue(Queue *queue, int data){
Queue *new_node, *p;
new_node = malloc(sizeof(Queue));
new_node->data = data;
new_node->next = NULL;
p = queue;
while(p->next != NULL){
p = p->next;
}
p->next = new_node;
return ??????
}
我知道要插入头部,你可以:
new_node->data = data;
new_node->next = queue;
return new_node;
如果我上面写的没有多大意义,我深表歉意。我很累,我已经经历了很多次迭代。可能遗漏了一些明显的东西。
【问题讨论】:
标签: c insert linked-list queue