亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

作業社區

探索學習新天地,共享知識資源!

0 提交作業
0 布置作業
0 滿分作業
得分 100
學習任務

RX0_UNICORN 的學生作業:

鏈式棧練習 // linkstack.h #ifndef __LINKSTACK_H__ #define __LINKSTACK_H__ #include #include #include typedef char data_t; typedef struct node { data_t data; struct node *next; }linknode_t; typedef struct { linknode_t *top; // 棧頂指針 int n; // 棧中元素個數 }linkstack_t; extern linkstack_t *create_empty_linkstack(); extern int is_empty_linkstack(linkstack_t *sl); extern int push_linkstack(linkstack_t *sl, data_t data); extern data_t pop_linkstack(linkstack_t *sl); extern data_t get_top_data(linkstack_t *sl); #endif // linkstack.c #include "linkstack.h" // 創建空的棧頂 linkstack_t *create_empty_linkstack() { linkstack_t *sl = NULL; sl = (linkstack_t *)malloc(sizeof(linkstack_t)); if(NULL == sl) { printf("malloc is fail!\n"); return NULL; } memset(sl, 0, sizeof(linkstack_t)); sl->top = NULL; return sl; } // 判空 int is_empty_linkstack(linkstack_t *sl) { return sl->top == NULL ? 1 : 0; } // 入棧 int push_linkstack(linkstack_t *sl, data_t data) { // 為新節點申請堆區空間,并為 temp->data 賦值 linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { printf("temp malloc is fail!\n"); return -1; } temp->data = data; // temp->next = sl->top; sl->top = temp; sl->n++; return 0; } // 出棧 data_t pop_linkstack(linkstack_t *sl) { // 保存刪除節點的地址(原棧頂指針) linknode_t *temp = sl->top; // 保存節點數據 data_t data = temp->data; // 更新棧頂指針,--- 即將刪除節點保存的下一個節點的地址 sl->top = temp->next; // 釋放空間 free(temp); temp = NULL; // 更新 n sl->n--; return data; } // 打印棧頂元素 data_t get_top_data(linkstack_t *sl) { return sl->top->data; } // linkstack main.c #include "linkstack.h" int main(int argc, const char *argv[]) { data_t data[] = {'a','n','i','h','c',' ','e','v','o','l',' ','I'}; linkstack_t *sl = create_empty_linkstack(); for (int i = 0; i < sizeof(data)/sizeof(data[0]); i++) { push_linkstack(sl, data[i]); } // data_t top_d = get_top_data(sl); // printf("%c\n", top_d); while (!is_empty_linkstack(sl)) { data_t ret = pop_linkstack(sl); printf("%c", ret); } printf("\n"); return 0; } 鏈式隊列練習 // linkqueue.h #ifndef __LINKQUEUE_H__ #define __LINKQUEUE_H__ #include #include #include typedef char data_t; // 鏈式隊列節點類型 typedef struct node { data_t data; struct node *next; }linknode_t; // 鏈式隊列隊列頭類型 typedef struct { linknode_t *front; linknode_t *rear; }linkqueue_t; extern linkqueue_t *create_empty_linkqueue(); extern int is_empty_linkqueue(linkqueue_t *lq); extern void enter_data_linkqueue(linkqueue_t *lq, data_t data); extern data_t delete_data_linkqueue(linkqueue_t *lq); #endif // linkqueue.c #include "linkqueue.h" linkqueue_t *create_empty_linkqueue() { linkqueue_t *lq = NULL; linknode_t *head = NULL; head = (linknode_t *)malloc(sizeof(linknode_t)); lq = (linkqueue_t *)malloc(sizeof(linkqueue_t)); if(NULL == lq || NULL == head) { printf("malloc is fail!\n"); return NULL; } head->next = NULL; lq->front = lq->rear = head; return lq; } int is_empty_linkqueue(linkqueue_t *lq) { return lq->front == lq->rear ? 1 : 0; } void enter_data_linkqueue(linkqueue_t *lq, data_t data) { linknode_t *temp = NULL; temp = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == temp) { printf("malloc is fail!\n"); return; } temp->data = data; temp->next = lq->rear->next; lq->rear->next = temp; lq->rear = temp; return; } data_t delete_data_linkqueue(linkqueue_t *lq) { data_t data; linknode_t *temp = NULL; temp = lq->front->next; data = temp->data; lq->front->next = temp->next; free(temp); temp = NULL; if(lq->front->next == NULL) { lq->rear = lq->front; } return data; } // linkqueue main.c #include "linkqueue.h" int main(int argc, const char *argv[]) { char data[] = {'I', ' ', 'L', 'o', 'v', 'e', ' ', 'C', 'h', 'i', 'n', 'a'}; linkqueue_t *lq = create_empty_linkqueue(); for(int i = 0; i < sizeof(data)/sizeof(data[0]); i++) { enter_data_linkqueue(lq, data[i]); } while(!is_empty_linkqueue(lq)) { data_t ret = delete_data_linkqueue(lq); printf("%c", ret); } printf("\n"); return 0; }

得分 100
討論題

RX0_UNICORN 的學生作業:

// seqstack.h #ifndef __SEQSTACK_H__ #define __SEQSTACK_H__ #include #include #include typedef char data_t; #define MAX 20 typedef struct { data_t buf[MAX]; int top; }seqstack_t; extern seqstack_t *create_empty_seqstack(); extern int is_empty_seqstack(seqstack_t *st); extern int is_full_seqstack(seqstack_t *st); extern void push_seqstack(seqstack_t *st, data_t data); extern data_t pop_seqstack(seqstack_t *st); extern data_t get_top_seqstack(seqstack_t *st); #endif // seqstack.c #include "seqstack.h" // 創建空棧 seqstack_t *create_empty_seqstack() { seqstack_t * st = NULL; st = (seqstack_t *)malloc(sizeof(seqstack_t)); if(NULL == st) { printf("malloc is fail!\n"); return NULL; } memset(st, 0, sizeof(seqstack_t)); st->top = -1; return st; } // 判斷棧是否為空 int is_empty_seqstack(seqstack_t *st) { return st->top == -1 ? 1 : 0; } // 判斷棧是否為滿 int is_full_seqstack(seqstack_t *st) { return st->top == MAX - 1 ? 1 : 0; } // 入棧 void push_seqstack(seqstack_t *st, data_t data) { st->top++; st->buf[st->top] = data; return; } // 出棧 data_t pop_seqstack(seqstack_t *st) { #if 0 data_t data; data = st->buf[st->top]; st->top--; return data; #endif return st->buf[st->top--]; } // 獲取棧頂元素 data_t get_top_seqstack(seqstack_t *st) { return st->buf[st->top]; } // main.c #include "seqstack.h" int main(int argc, const char *argv[]) { data_t data[] = {'a','n','i','h','c',' ','e','v','o','l',' ','I'}; seqstack_t *st = create_empty_seqstack(); int i = 0; int len = sizeof(data)/sizeof(data[0]); while(!is_full_seqstack(st) && i < len) { push_seqstack(st, data[i]); i++; } // data_t top_d = get_top_seqstack(st); // printf("top : %c\n", top_d); while(!is_empty_seqstack(st)) { data_t ret = pop_seqstack(st); printf("%c ", ret); } printf("\n"); return 0; } 【圖片】

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號