总结3
利用单链表,查找倒数第k个元素
int *searchk(LinkList L,int k) { LNode* p, * q;; p = L->next; q = L->next; int count = 0; while (p) { if (count < k) count++; else q = q->next; p = p->next; } if (count < k) return 0; else { printf("%d", q->data); return 1; } }
算法思想,设置两个结点指针p,q,都指向头结点的下一个结点,先让p结点走k个结点,p与q之间的距离就是k,然后让q与p同步移动,p指向空时,q所指结点即为倒数第k个元素
判断二叉树是否为完全二叉树
采用层次遍历算法,将二叉树中的所有结点入队,无论结点是否为空,遇到空结点时,查看其后是否有非空结点,若有,则二叉树不是完全二叉树
//判断二叉树是否为完全二叉树 int Complete(BiTree bt) { BiTNode* p; p = bt; Queue Q; InitQueue(&Q); if (bt == NULL) return 1;//空树为完全二叉树 EnterQueue(&Q, bt); while (!IsEmpty(Q)) { DeQueue(&Q, *p); if (p) { EnQueue(p->lchild); EnQueue(p->rchild); } else { while (!IsEmpty(Q)) { DeQueue(&Q, &p); if (p) return 0; } } } return 1; }
中序线索二叉树的后继结点
ThreadNode *Innext(ThreadNode* x) { ThreadNode* p, * nextnode; if (x->rtag == 1) nextnode = x->rchild;//利用线索 else { for (p = x->rchild; p->ltag == 0; p = p->lchild)//在x右子树中查找最左下端结点 nextnode = p; } return nextnode; }
有哈希表ht[0,......,m-1},H(k)=k%p(p<=m),计算平均查找失败长度
将该结点层号存入layer之中,并输出该结点的值和层号
努力的意义就是放眼望去以后都是喜欢的人和事......

浙公网安备 33010602011771号