为了账号安全,请及时绑定邮箱和手机立即绑定

作业社区

探索学习新天地,共享知识资源!

0 提交作业
0 布置作业
0 满分作业
得分 100
学习任务

jelasin 的学生作业:

练习 1 int depth_of_binary_tree(BTNode_t* root) { if (NULL == root) { return 0; } int left = depth_of_binary_tree(root->left); int right = depth_of_binary_tree(root->right); return left > right ? left + 1 : right + 1; } 练习 2 slist_node* find_by_idx_slist(const slist_head* head, int idx) { if (NULL == head->next || idx head->n) { return NULL; } slist_node* current = head->next; for (size_t i = 1; i next; } } return current; } int sort_linklist(slist_head* head) { slist_node* p = NULL; slist_node* q = NULL; if (NULL == head->next) { return -1; } #define SWAP(x, y) ({ \ typeof(*x) _x = *x; \ typeof(*y) _y = *y; \ (void) (&_x == &_y); \ *x = _y; *y = _x; \ }) printf("Sorting...\n"); bool flag; int last_idx = head->n; int flag_idx = 0; while (true) { flag = true; for (size_t j = 1; j data > q->data) { SWAP(&(p->data), &(q->data)); print_slist(head); flag_idx = j; flag = false; } } if (flag) { break; } last_idx = flag_idx; } return 0; } // main.c #include "SList.h" int test() { slist_head * l = create_empyt_slist(); if (NULL == l) { perror("Failed to create list"); return -1; } insert_head_slist(l, 1); insert_head_slist(l, 5); insert_head_slist(l, 3); insert_head_slist(l, 7); insert_head_slist(l, 9); insert_head_slist(l, 8); insert_head_slist(l, 2); insert_head_slist(l, 4); insert_head_slist(l, 6); print_slist(l); sort_linklist(l); print_slist(l); destyroy_slist(l); return 0; } int main(int argc, char const *argv[]) { return test(); } ➜ sList clang *.c -o slist ➜ sList ./slist 6 -> 4 -> 2 -> 8 -> 9 -> 7 -> 3 -> 5 -> 1 -> NULL Sorting... 4 -> 6 -> 2 -> 8 -> 9 -> 7 -> 3 -> 5 -> 1 -> NULL 4 -> 2 -> 6 -> 8 -> 9 -> 7 -> 3 -> 5 -> 1 -> NULL 4 -> 2 -> 6 -> 8 -> 7 -> 9 -> 3 -> 5 -> 1 -> NULL 4 -> 2 -> 6 -> 8 -> 7 -> 3 -> 9 -> 5 -> 1 -> NULL 4 -> 2 -> 6 -> 8 -> 7 -> 3 -> 5 -> 9 -> 1 -> NULL 4 -> 2 -> 6 -> 8 -> 7 -> 3 -> 5 -> 1 -> 9 -> NULL 2 -> 4 -> 6 -> 8 -> 7 -> 3 -> 5 -> 1 -> 9 -> NULL 2 -> 4 -> 6 -> 7 -> 8 -> 3 -> 5 -> 1 -> 9 -> NULL 2 -> 4 -> 6 -> 7 -> 3 -> 8 -> 5 -> 1 -> 9 -> NULL 2 -> 4 -> 6 -> 7 -> 3 -> 5 -> 8 -> 1 -> 9 -> NULL 2 -> 4 -> 6 -> 7 -> 3 -> 5 -> 1 -> 8 -> 9 -> NULL 2 -> 4 -> 6 -> 3 -> 7 -> 5 -> 1 -> 8 -> 9 -> NULL 2 -> 4 -> 6 -> 3 -> 5 -> 7 -> 1 -> 8 -> 9 -> NULL 2 -> 4 -> 6 -> 3 -> 5 -> 1 -> 7 -> 8 -> 9 -> NULL 2 -> 4 -> 3 -> 6 -> 5 -> 1 -> 7 -> 8 -> 9 -> NULL 2 -> 4 -> 3 -> 5 -> 6 -> 1 -> 7 -> 8 -> 9 -> NULL 2 -> 4 -> 3 -> 5 -> 1 -> 6 -> 7 -> 8 -> 9 -> NULL 2 -> 3 -> 4 -> 5 -> 1 -> 6 -> 7 -> 8 -> 9 -> NULL 2 -> 3 -> 4 -> 1 -> 5 -> 6 -> 7 -> 8 -> 9 -> NULL 2 -> 3 -> 1 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> NULL 2 -> 1 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> NULL 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> NULL 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 -> NULL 1 2 3 4 5 6 7 8 9 练习3 int merge_sorted_linklist(slist_head* head_1, slist_head* head_2) { if (NULL == head_1 || NULL == head_2) { return -1; } slist_node* cmp_node = NULL; slist_node* insert_node = NULL; for (size_t i = 1; i n; i++) { insert_node = find_by_idx_slist(head_2, i); printf("Inserting %d\n", insert_node->data); for (size_t j = 1; j n; j++) { cmp_node = find_by_idx_slist(head_1, j); printf("Comparing %d and %d\n", cmp_node->data, insert_node->data); if (insert_node->data > cmp_node->data && j != head_1->n) { continue; } else if (unlikely(j == head_1->n)) { insert_tail_slist(head_1, insert_node->data); break; } else if (insert_node->data data) { if (unlikely(1 == j)) { insert_head_slist(head_1, insert_node->data); } else { slist_node* temp = cmp_node->next; slist_node* new_node = (slist_node*)malloc(sizeof(slist_node)); if (NULL == new_node) { perror("Failed to allocate memory for new node"); return -1; } new_node->data = cmp_node->data; cmp_node->data = insert_node->data; cmp_node->next = new_node; new_node->next = temp; head_1->n++; print_slist(head_1); } break; } } } return 0; } ➜ sList ./slist 1 -> 3 -> 5 -> 7 -> 9 -> NULL 2 -> 4 -> 6 -> 8 -> 10 -> NULL Inserting 2 Comparing 1 and 2 Comparing 3 and 2 1 -> 2 -> 3 -> 5 -> 7 -> 9 -> NULL Inserting 4 Comparing 1 and 4 Comparing 2 and 4 Comparing 3 and 4 Comparing 5 and 4 1 -> 2 -> 3 -> 4 -> 5 -> 7 -> 9 -> NULL Inserting 6 Comparing 1 and 6 Comparing 2 and 6 Comparing 3 and 6 Comparing 4 and 6 Comparing 5 and 6 Comparing 7 and 6 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 9 -> NULL Inserting 8 Comparing 1 and 8 Comparing 2 and 8 Comparing 3 and 8 Comparing 4 and 8 Comparing 5 and 8 Comparing 6 and 8 Comparing 7 and 8 Comparing 9 and 8 Inserting 10 Comparing 1 and 10 Comparing 2 and 10 Comparing 3 and 10 Comparing 4 and 10 Comparing 5 and 10 Comparing 6 and 10 Comparing 7 and 10 Comparing 9 and 10 Comparing 8 and 10 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 9 -> 8 -> 10 -> NULL 1 2 3 4 5 6 7 9 8 10 2 4 6 8 10 练习4【图片】

得分 100
讨论题

奔跑的人生 的学生作业:

linklist.h #ifndef LINKLIST_H #define LINKLIST_H #include #include #include typedef int datatype_t; typedef struct node { datatype_t data; struct node *next; } linknode_t; extern linknode_t *create_empyt_linklist(); extern void insert_data_linklist(linknode_t *head, datatype_t data); extern void printf_data_linklist(linknode_t *head); extern void insert_tail_linklist(linknode_t *head, datatype_t data); extern void insert_order_linklist(linknode_t *head, datatype_t data); extern int is_empty_linklist(linknode_t *head); extern int delete_data_linklist(linknode_t *head, datatype_t data); #endif //LINKLIST_H linklist.c #include "linklist.h" linknode_t *create_empyt_linklist() { linknode_t *head = NULL; head = (linknode_t *) malloc(sizeof(linknode_t)); if (NULL == head) { printf("malloc is fail!\n"); return NULL; } memset(head, 0, sizeof(linknode_t)); return head; } //头插法 void insert_data_linklist(linknode_t *head, datatype_t data) { linknode_t *temp = (linknode_t *) malloc(sizeof(linknode_t)); if (NULL == temp) { printf("malloc is fail!\n"); return; } temp->data = data; temp->next = head->next; head->next = temp; return; } //尾插法 void insert_tail_linklist(linknode_t *head, datatype_t data) { linknode_t *temp = (linknode_t *) malloc(sizeof(linknode_t)); if (NULL == temp) { printf("malloc is fail!\n"); return; } temp->data = data; linknode_t *p = head; while (p->next != NULL) { p = p->next; } temp->next = p->next; p->next = temp; return; } //有序插法 void insert_order_linklist(linknode_t *head, datatype_t data) { linknode_t *temp = (linknode_t *) malloc(sizeof(linknode_t)); if (NULL == temp) { printf("malloc is fail!\n"); return; } temp->data = data; linknode_t *p = head; while (p->next != NULL && data < p->next->data) { p = p->next; } temp->next = p->next; p->next = temp; return; } void printf_data_linklist(linknode_t *head) { linknode_t *p = head; while (p->next != NULL) { printf("%d ", p->next->data); p = p->next; } printf("\n"); return; } int is_empty_linklist(linknode_t *head) { return head->next == NULL ? 1 : 0; } int delete_data_linklist(linknode_t *head, datatype_t data) { linknode_t *p = NULL; linknode_t *q = NULL; int flag = 0; if (is_empty_linklist(head)) { return -1; } p = head; while (p->next != NULL) { if (p->next->data == data) { q = p->next; p->next = q->next; free(q); q = NULL; flag = 1; }else { p = p->next; } } if (flag == 0) { return -2; }else { printf("delete %d is successful!\n",data); return 0; } } main.c #include "linklist.c" int main() { linknode_t *head = NULL; datatype_t data; int n = 0; int res = 0; head = create_empyt_linklist(); printf("请输入你想插入的个数:\n"); scanf("%d", &n); printf("请输入%d个数\n", n); for (int i = 0; i < n; i++) { scanf("%d", &data); // insert_data_linknode(head, data); //insert_tail_linklist(head,data); insert_order_linklist(head, data); } printf_data_linklist(head); printf("请输入您想要删除的数据:\n"); scanf("%d", &data); res = delete_data_linklist(head, data); if (res < 0) { printf("没有找到要删除的数据或链表数据为空!\n"); return -1; } printf_data_linklist(head); return 0; } 【图片】

得分 100
讨论题

奔跑的人生 的学生作业:

linklist.h #ifndef LINKLIST_H #define LINKLIST_H #include #include #include typedef int datatype_t; typedef struct node { datatype_t data; struct node *next; } linknode_t; extern linknode_t *create_empyt_linklist(); extern void insert_data_linklist(linknode_t *head, datatype_t data); extern void printf_data_linklist(linknode_t *head); extern void insert_tail_linklist(linknode_t *head, datatype_t data); extern void insert_order_linklist(linknode_t *head, datatype_t data); #endif //LINKLIST_H linklist.c // // Created by yanbo.zhang on 2025-02-20. // #include "linklist.h" linknode_t * create_empyt_linklist(){ linknode_t *head = NULL; head = (linknode_t *)malloc(sizeof(linknode_t)); if(NULL == head){ printf("malloc is fail!\n"); return NULL; } memset(head, 0, sizeof(linknode_t)); return head; } //头插法 void insert_data_linklist(linknode_t *head, datatype_t data) { linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if (NULL == temp) { printf("malloc is fail!\n"); return; } temp->data = data; temp->next = head->next; head->next = temp; return; } //尾插法 void insert_tail_linklist(linknode_t *head, datatype_t data) { linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if (NULL == temp) { printf("malloc is fail!\n"); return; } temp->data = data; linknode_t *p = head; while (p->next != NULL) { p = p->next; } temp->next = p->next; p->next = temp; return; } //有序插法 void insert_order_linklist(linknode_t *head, datatype_t data) { linknode_t *temp = (linknode_t *)malloc(sizeof(linknode_t)); if (NULL == temp) { printf("malloc is fail!\n"); return; } temp->data = data; linknode_t *p = head; while (p->next != NULL && data < p->next->data) { p = p->next; } temp->next = p->next; p->next = temp; return; } void printf_data_linklist(linknode_t *head) { linknode_t *p = head; while (p->next != NULL) { printf("%d ", p->next->data); p = p->next; } return; } main.c #include "linklist.c" int main() { linknode_t *head = NULL; datatype_t data; int n = 0; head = create_empyt_linklist(); printf("请输入你想插入的个数:\n"); scanf("%d", &n); printf("请输入%d个数\n",n); for (int i = 0; i < n; i++) { scanf("%d", &data); // insert_data_linknode(head, data); //insert_tail_linklist(head,data); insert_order_linklist(head, data); } printf_data_linklist(head); return 0; } 【图片】

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号