fix linked list test
This commit is contained in:
parent
c053f13e4f
commit
e96fabfe56
|
@ -22,8 +22,10 @@ void enqueue_tail(int d) {
|
|||
new_node->data = d;
|
||||
new_node->next = tail;
|
||||
new_node->prev = NULL;
|
||||
|
||||
if (tail != NULL)
|
||||
tail->prev = new_node;
|
||||
|
||||
tail = new_node;
|
||||
if (head == NULL)
|
||||
head = tail;
|
||||
|
@ -36,12 +38,14 @@ void enqueue_tail(int d) {
|
|||
|
||||
void enqueue_head(int d) {
|
||||
struct Node *new_node = malloc(sizeof(*new_node));
|
||||
|
||||
// printf("enqueue_head head: %p\n", (void*)head);
|
||||
new_node->data = d;
|
||||
new_node->next = NULL;
|
||||
new_node->prev = head;
|
||||
|
||||
if (head != NULL)
|
||||
head->next = new_node;
|
||||
|
||||
head = new_node;
|
||||
if (tail == NULL)
|
||||
tail = head;
|
||||
|
@ -64,7 +68,11 @@ int dequeue_tail(void) {
|
|||
int d = tail->data;
|
||||
if (tail->next != NULL)
|
||||
tail->next->prev = NULL;
|
||||
|
||||
tail = tail->next;
|
||||
if (t == head)
|
||||
head = NULL;
|
||||
|
||||
free(t);
|
||||
return d;
|
||||
}
|
||||
|
@ -79,14 +87,19 @@ int dequeue_head(void) {
|
|||
|
||||
struct Node *t = head;
|
||||
int d = head->data;
|
||||
|
||||
if (head->prev != NULL) {
|
||||
head->prev->next = NULL;
|
||||
}
|
||||
|
||||
head = head->prev;
|
||||
|
||||
// printf("B. dequeue_head t: %p\n", (void*)t);
|
||||
// printf("B. dequeue_head head: %p\n", (void*)head);
|
||||
// printf("B. dequeue_head head next: %p\n", (void*)((head == NULL) ? NULL : head->next));
|
||||
// printf("B. dequeue_head head prev: %p\n", (void*)((head == NULL) ? NULL : head->prev));
|
||||
if (t == tail)
|
||||
tail = NULL;
|
||||
|
||||
free(t);
|
||||
return d;
|
||||
|
@ -99,6 +112,7 @@ void reverse_list(void) {
|
|||
tmp1 = tail;
|
||||
tail = head;
|
||||
head = tmp1;
|
||||
|
||||
while (tmp1 != NULL) {
|
||||
tmp2 = tmp1->next;
|
||||
tmp1->next = tmp1->prev;
|
||||
|
@ -117,7 +131,6 @@ int main(int argc, char **argv) {
|
|||
for (i = 0; i < COUNT; i++) {
|
||||
printf("dequeue tail: %d\n", dequeue_tail());
|
||||
}
|
||||
|
||||
for (i = 0; i < COUNT; i++) {
|
||||
printf("enqueue head: %d\n", i);
|
||||
enqueue_head(i);
|
||||
|
@ -125,7 +138,6 @@ int main(int argc, char **argv) {
|
|||
for (i = 0; i < COUNT; i++) {
|
||||
printf("dequeue head: %d\n", dequeue_head());
|
||||
}
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
printf("enqueue head: %d\n", i);
|
||||
enqueue_head(i);
|
||||
|
|
Loading…
Reference in a new issue