From 09e082cc688d789b6b8dd35e49915f449676b388 Mon Sep 17 00:00:00 2001 From: jf-home Date: Fri, 21 Jun 2024 01:05:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=B0=E4=BA=86=EF=BC=8C=E4=B8=8D=E5=86=99?= =?UTF-8?q?=E4=BA=86=E3=80=82=E6=98=8E=E5=A4=A9=E7=BB=A7=E7=BB=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- datastruct/deque.c | 11 ++++++++++- datastruct/deque_test.c | 18 ++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/datastruct/deque.c b/datastruct/deque.c index e1d385a..12e4393 100644 --- a/datastruct/deque.c +++ b/datastruct/deque.c @@ -76,7 +76,16 @@ bool deque_back(struct _deque* self, void* obj) bool deque_front(struct _deque* self, void* obj) { + assert(self != NULL); + assert(self->_head != NULL); + assert(obj != NULL); + if (self->empty(self)) + { + return false; + } + memmove(obj, self->_head->prev->obj, self->_obj_size); + return true; } bool deque_insert(struct _deque* self, int index, void* obj) @@ -143,7 +152,7 @@ void deque_print(struct _deque* self) uint32_t i = 0; struct _deque_node * node = self->_head->prev; - while (node != self->_head->next) + for (uint32_t i = 0; i < self->size(self); i++) { self->print_obj(node->obj); node = node->next; diff --git a/datastruct/deque_test.c b/datastruct/deque_test.c index 3bf8b9f..800ab0c 100644 --- a/datastruct/deque_test.c +++ b/datastruct/deque_test.c @@ -24,16 +24,26 @@ static void deque_test_num(void) { dq.push_back(&dq, &data[i]); - dq.back(&dq, &temp); - - printf("push_back = "); + dq.front(&dq, &temp); + printf("front = "); dq.print_obj(&temp); - printf("\tsize after push_back = %2d\n", dq.size(&dq)); + + dq.back(&dq, &temp); + printf("\tback = "); + dq.print_obj(&temp); + + printf("\tsize = %2d\n", dq.size(&dq)); } printf("----- print -----\n"); dq.print(&dq); printf("\n"); + dq.clear(&dq); + if (dq.empty(&dq)) + { + printf("----- empty -----\n"); + } + #if 0 printf("----- pop -----\n"); for (i = 0; i < len + 1; i++)