
作业社区
探索学习新天地,共享知识资源!
jelasin 的学生作业:
4+11+11+1=27 33120min //link_queue.h #ifndef __LINK_QUEUE_H__ #define __LINK_QUEUE_H__ #include #include #include #include #include typedef int data_t; typedef struct qnode { data_t data; struct qnode *next; } qlinknode_t; typedef struct { qlinknode_t *front; qlinknode_t *rear; int n; }linkqueue_t; extern linkqueue_t *create_empty_linkqueue(); extern bool is_empty_linkqueue(linkqueue_t *queue); extern bool enqueue_linkqueue(linkqueue_t *queue, data_t value); extern data_t dequeue_linkqueue(linkqueue_t *queue); extern int get_num_of_linkqueue(linkqueue_t *queue); #endif //link_queue.c #include "link_queue.h" linkqueue_t *create_empty_linkqueue() { linkqueue_t * q = (linkqueue_t*)malloc(sizeof(linkqueue_t)); if (NULL == q) { perror("Failed to allocate memory for link queue"); return NULL; } q->front = q->rear = NULL; q->n = 0; return q; } bool is_empty_linkqueue(linkqueue_t *queue) { return queue->front == NULL || queue->rear == NULL; } bool enqueue_linkqueue(linkqueue_t *queue, data_t value) { qlinknode_t* new_node = (qlinknode_t*)malloc(sizeof(qlinknode_t)); if (NULL == new_node) { perror("Failed to allocate memory for new node in link queue"); return false; } new_node->data = value; new_node->next = NULL; queue->n++; if (is_empty_linkqueue(queue)) { queue->front = queue->rear = new_node; return true; } queue->rear->next = new_node; queue->rear = new_node; return true; } data_t dequeue_linkqueue(linkqueue_t *queue) { if (is_empty_linkqueue(queue)) { perror("queue is empty"); return -1; } qlinknode_t* temp = queue->front; if (NULL != queue->front->next) { queue->front = queue->front->next; } else { queue->front = queue->rear = NULL; } data_t data = temp->data; free(temp); temp = NULL; queue->n--; return data; } int get_num_of_linkqueue(linkqueue_t *queue) { return queue->n; } //link_stack.h #ifndef __LINK_STACK_H__ #define __LINK_STACK_H__ #include #include #include #include #include typedef int data_t; typedef struct snode { data_t data; struct snode *next; } slinknode_t; typedef struct { slinknode_t *top; int n; } linkstack_t; extern linkstack_t * create_empty_linkstack(); extern int is_empty_linkstack(linkstack_t *s); extern int push_linkstack(linkstack_t *s, data_t data); extern data_t pop_linkstack(linkstack_t *s); extern data_t get_top_data(linkstack_t *s); extern int get_num_of_linkstack(linkstack_t *s); #endif //link_stack.c #include "link_stack.h" linkstack_t * create_empty_linkstack() { linkstack_t *s = (linkstack_t *)malloc(sizeof(linkstack_t)); if (NULL == s) { perror("Failed to allocate memory for link stack"); return NULL; } s->top = NULL; s->n = 0; return s; } int is_empty_linkstack(linkstack_t *s) { return s->top == NULL; } int push_linkstack(linkstack_t *s, data_t data) { slinknode_t *new_node = (slinknode_t *)malloc(sizeof(slinknode_t)); if (NULL == new_node) { perror("Failed to allocate memory for new node"); return -1; } new_node->data = data; new_node->next = s->top; s->top = new_node; s->n++; return 0; } data_t pop_linkstack(linkstack_t *s) { if (is_empty_linkstack(s)) { perror("Stack is empty"); return -1; } slinknode_t* top_node = s->top; s->top = top_node->next; data_t data = top_node->data; free(top_node); top_node = NULL; s->n--; return data; } data_t get_top_data(linkstack_t *s) { if (is_empty_linkstack(s)) { perror("Stack is empty"); return -1; } return s->top->data; } int get_num_of_linkstack(linkstack_t *s) { return s->n; } //main.c #include "link_queue.h" #include "link_stack.h" #define N 27 bool is_orginal_queue(linkqueue_t * lq) { qlinknode_t* p; if (NULL == lq) { printf("lq is NULL\n"); return -1; } p = lq->front; while (p && p->next) { if (p->data next->data) { p = p->next; } else { return false; } } return true; } int main(int argc, char const *argv[]) { linkqueue_t* ball_queue = create_empty_linkqueue(); linkstack_t* min_stack = create_empty_linkstack(); linkstack_t* min5_stack = create_empty_linkstack(); linkstack_t* hour_stack = create_empty_linkstack(); int min = 0; int ball = 0; int half_day = 0; for (size_t i = 0; i 33120




