Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

can anyone help me my coding C++ lab exercise one ? thanks so much !!! Solution

ID: 3937812 • Letter: C

Question

can anyone help me my coding C++ lab exercise one ? thanks so much !!!

Explanation / Answer

struct Queue { Line* enqueue; Line* dequeue; size_t count; size_t line_capacity; } static void free_line( Line** ppLine ) { Line* toFree = *ppLine; assert(toFree !== NULL); *ppLine = toFree->next; free(toFree); } // theoretically could make this return a bool indicating error/no error, // but it's easier to remember that NULL means error. static Line* push_line_before( Line** ppLine, size_t capacity ) { Line* before = *ppLine; Line* new_line = malloc(sizeof(Line) + capacity * sizeof(void **)); if (new_line == NULL) return NULL; new_line->next = before; *ppLine = new_line; /* do initialization the same way you did it... */ return new_line; } static void why_this_way_is_better(Queue* someQueue) { // Queue has no Line-valued member, and yet we can still use the same // functions for a Queue member... free_line( &(someQueue->dequeue) ); push_line_before( &(someQueue->enqueue) ); // ... as the ones for a line member free_line( &(someQueue->dequeue->next) ); push_line_before( &(someQueue->enqueue->next) ); } #include #include #include "shannon.c" #include "queue.h" // SLIST. typedef struct slist_data_s slist_data_t; struct slist_data_s { int value; SLIST_ENTRY(slist_data_s) entries; }; // SLIST. void slist(int n) { int i=0; slist_data_t *datap=NULL; SLIST_HEAD(slisthead, slist_data_s) head; SLIST_INIT(&head); // Write. for (i=0; ivalue = (int) (randshannon() * 1000.); printf("Insert: %d ", datap->value); SLIST_INSERT_HEAD(&head, datap, entries); } printf(" "); // Read1. SLIST_FOREACH(datap, &head, entries) { printf("Read1: %d ", datap->value); } printf(" "); // Read2 (remove). while (!SLIST_EMPTY(&head)) { datap = SLIST_FIRST(&head); printf("Read2: %d ", datap->value); SLIST_REMOVE_HEAD(&head, entries); free(datap); } } // LIST. typedef struct list_data_s list_data_t; struct list_data_s { int value; LIST_ENTRY(list_data_s) entries; }; // LIST. void list(int n) { int i=0; list_data_t *datap=NULL; LIST_HEAD(listhead, list_data_s) head; LIST_INIT(&head); // Write. for (i=0; ivalue = (int) (randshannon() * 1000.); printf("Insert: %d ", datap->value); LIST_INSERT_HEAD(&head, datap, entries); } printf(" "); // Read1. LIST_FOREACH(datap, &head, entries) { printf("Read1: %d ", datap->value); } printf(" "); // Read2 (remove). while (!LIST_EMPTY(&head)) { datap = LIST_FIRST(&head); printf("Read2: %d ", datap->value); LIST_REMOVE(datap, entries); free(datap); } } // STAILQ. typedef struct stailq_data_s stailq_data_t; struct stailq_data_s { int value; STAILQ_ENTRY(stailq_data_s) entries; }; // STAILQ. void stailq(int n) { int i=0; stailq_data_t *datap=NULL; STAILQ_HEAD(stailqhead, stailq_data_s) head; STAILQ_INIT(&head); // Write1 (head). for (i=0; ivalue = (int) (randshannon() * 1000.); printf("Insert head: %d ", datap->value); STAILQ_INSERT_HEAD(&head, datap, entries); } printf(" "); // Read1. STAILQ_FOREACH(datap, &head, entries) { printf("Read1: %d ", datap->value); } printf(" "); // Read2 (remove). while (!STAILQ_EMPTY(&head)) { datap = STAILQ_FIRST(&head); printf("Read2: %d ", datap->value); STAILQ_REMOVE_HEAD(&head, entries); free(datap); } printf(" "); // Write2 (tail). for (i=0; ivalue = (int) (randshannon() * 1000.); printf("Insert tail: %d ", datap->value); STAILQ_INSERT_TAIL(&head, datap, entries); } printf(" "); // Read1. STAILQ_FOREACH(datap, &head, entries) { printf("Read1: %d ", datap->value); } printf(" "); // Read2 (remove). while (!STAILQ_EMPTY(&head)) { datap = STAILQ_FIRST(&head); printf("Read2: %d ", datap->value); STAILQ_REMOVE_HEAD(&head, entries); free(datap); } } // TAILQ. typedef struct tailq_data_s tailq_data_t; struct tailq_data_s { int value; TAILQ_ENTRY(tailq_data_s) entries; }; // TAILQ. void tailq(int n) { int i=0; tailq_data_t *datap=NULL; TAILQ_HEAD(tailqhead, tailq_data_s) head; TAILQ_INIT(&head); // Forward. printf("- Forward "); // Write1 (head). for (i=0; ivalue = (int) (randshannon() * 1000.); printf("Insert head: %d ", datap->value); TAILQ_INSERT_HEAD(&head, datap, entries); } printf(" "); // Read1. TAILQ_FOREACH(datap, &head, entries) { printf("Read1: %d ", datap->value); } printf(" "); // Read2 (remove). while (!TAILQ_EMPTY(&head)) { datap = TAILQ_FIRST(&head); printf("Read2: %d ", datap->value); TAILQ_REMOVE(&head, datap, entries); free(datap); } printf(" "); // Write2 (tail). for (i=0; ivalue = (int) (randshannon() * 1000.); printf("Insert tail: % d ", datap->value); TAILQ_INSERT_TAIL(&head, datap, entries); } printf(" "); // Read1. TAILQ_FOREACH(datap, &head, entries) { printf("Read1: %d ", datap->value); } printf(" "); // Read2 (remove). while (!TAILQ_EMPTY(&head)) { datap = TAILQ_FIRST(&head); printf("Read2: %d ", datap->value); TAILQ_REMOVE(&head, datap, entries); free(datap); } printf(" "); // Reverse. printf("- Reverse "); // Write1 (head). for (i=0; ivalue = (int) (randshannon() * 1000.); printf("Insert head: %d ", datap->value); TAILQ_INSERT_HEAD(&head, datap, entries); } printf(" "); // Read1. TAILQ_FOREACH_REVERSE(datap, &head, tailqhead, entries) { printf("Read1: %d ", datap->value); } printf(" "); // Read2 (remove). while (!TAILQ_EMPTY(&head)) { datap = TAILQ_LAST(&head, tailqhead); printf("Read2: %d ", datap->value); TAILQ_REMOVE(&head, datap, entries); free(datap); } printf(" "); // Write2 (tail). for (i=0; ivalue = (int) (randshannon() * 1000.); printf("Insert tail: % d ", datap->value); TAILQ_INSERT_TAIL(&head, datap, entries); } printf(" "); // Read1. TAILQ_FOREACH_REVERSE(datap, &head, tailqhead, entries) { printf("Read1: %d ", datap->value); } printf(" "); // Read2 (remove). while (!TAILQ_EMPTY(&head)) { datap = TAILQ_LAST(&head, tailqhead); printf("Read2: %d ", datap->value); TAILQ_REMOVE(&head, datap, entries); free(datap); } }
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote