Question
In the following C program, I want to know how to print out the data values of the nodes, NOT the address as is currently
In the following C program, I want to know how to print out the data values of the nodes, NOT the address as is currently the case.
#include
#include
#include
typedef struct queueNode queueNode;
typedef struct queue queue;
struct queueNode
{
void* data_;
queueNode* next_;
};
queueNode* queueNode_create(void* data);
queueNode* queueNode_create_next(void* data, queueNode* next);
//-----------------------------------------------------------
queueNode* queueNode_create(void *data) {
return queueNode_create_next(data, NULL);
}
//-------------------------------------------------------
queueNode* queueNode_create_next(void* data, queueNode* next) {
queueNode* p = (queueNode*)malloc(sizeof(queueNode));
p->data_ = data;
p->next_ = next;
return p;
}
void queueNode_print(queueNode* q){ printf("Data: %p Next: %p ",q->data_,q->next_); }
struct queue
{
queueNode* head_;
int numitems_;
};
/*
create
empty
check_empty
size
front
back
push_back
pop_front
delete
*/
queue* queue_create();
bool queue_empty(queue* q);
void queue_check_empty(queue* q);
int queue_size(queue* q);
void* queue_front(queue* q);
void* queue_back(queue* q);
void queue_push_back(queue* q,void* data);
void queue_pop_front(queue* q);
void queue_print(queue* q);
void queue_delete(queue* q);
queue* queue_create()
{
queue* q = (queue*)malloc(sizeof(queue));
q->numitems_ = 0;
q->head_ = NULL;
return q;
}
bool queue_empty(queue* q) { return q->numitems_ == 0; }
void queue_check_empty(queue* q) { if (queue_empty(q)) { fprintf(stderr, "
int queue_size(queue* q) { return q->numitems_; } //he put returns size_t
void* queue_front(queue* q)
{
queue_check_empty(q);
return q->head_;
}
void* queue_back(queue* q)
{
queue_check_empty(q);
queueNode* temp = q->head_;
while(temp->next_ != NULL) { temp = temp->next_; }
return temp;
}
void queue_push_back(queue* q,void* data)
{
queueNode* node = queueNode_create(data);
if (queue_size(q) == 0) {
q->head_ = node;
}
else {
queueNode* temp = q->head_;
while (temp->next_ != NULL) {
temp = temp->next_;
}
temp->next_ = node;
}
++q->numitems_;
}
void queue_pop_front(queue* q)
{
queue_check_empty(q); //no need to check if empty
q->head_ = q->head_->next_;
//--q->numitems_;
}
void queue_print(queue* q)
{
queue_check_empty(q);
queueNode* temp = q->head_;
while(temp->next_ != NULL)
{
queueNode_print(temp);
//printf("[%p, %p],", q->data, q->next);
//printf("%p ", *front);
temp = temp->next_;
}
}
void queue_delete(queue* q)
{
//while(!q->empty()) { qu->pop(); } add this!
free(q);
}
int main(int argc, const char * argv[]) {
queue* q = queue_create();
int i;
for (i = 0; i < 10; ++i) { queue_push_back(q, (void*)(i*2)); }
printf("Before Pop ");
queue_print(q);
queue_pop_front(q);
printf("After Pop1 ");
queue_print(q);
queue_pop_front(q);
printf("After Pop2 ");
queue_print(q);
queue_pop_front(q);
queue_pop_front(q);
queue_pop_front(q);
printf("After Pop3 ");
queue_print(q);
queue_delete(q);
//for (i = 0; i < 10; ++i) { }
return 0;
}
//END
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started