作业社区
探索学习新天地,共享知识资源!
zhuluoc 的学生作业:
练习1: // 写代码实现求二叉树的深度。 int tree_deepness(bitree_t *root) { int ildep = 0, irdep = 0; if (NULL == root) return 0; // 左孩子深度 ildep = tree_deepness(root->lch); // 右孩子深度 irdep = tree_deepness(root->rch); if (ildep < irdep) ildep = irdep; return ildep + 1; } 练习2 // 在单向链表中实现冒泡排序 void sort_linklist(linknode_t *h) { linknode_t *p = NULL, *q = NULL; p = h->next; while (NULL != p->next) { q = h->next; while (NULL != q->next) { if (q->data > q->next->data) { q->data ^= q->next->data; q->next->data ^= q->data; q->data ^= q->next->data; } q = q->next; } p = p->next; } } 练习3: // 将两个有序链表合成一个有序链表 linknode_t *and_linklist(linknode_t *h1, linknode_t *h2) { // p--指向链表h1; t--用于将链表2节点脱离出来; // h--用于记录有序链表1当前插入节点的位置,以减少循环次数 linknode_t *p = NULL, *t = NULL, *h = NULL; if (NULL == h1) return h2; if (NULL == h2) return h1; h = h1; while (NULL != h2->next) { p = h; while (NULL != p->next) { if (p->next->data > h2->next->data) { // 将链表2的节点脱离链表2 t = h2->next; h2->next = t->next; // 将脱离的节点插入到链表1 t->next = p->next; p->next = t; h = p; // 记录下当前位置 // 退出循环 break; } // 若下一个节点的值小于要比较的值,但下下一个节点的值大于要比较的值,插入比较值节点 else if (p->next->data < h2->next->data && (NULL == p->next->next || p->next->next->data >= h2->next->data)) { // 将链表2的节点脱离链表2 t = h2->next; h2->next = t->next; // 将脱离的节点插入到链表1 t->next = p->next->next; p->next->next = t; h = p; // 记录下当前位置 // 退出循环 break; } p = p->next; } // End of "while (NULL != p->next)" } // End of "while (NULL != h2->next)" return h1; } 练习4:【图片】
+9