原文内容来自免费考研论坛,请点击查看全文
http://bbs.freekaoyan.com/viewthread.php?tid=93546
1111试编写算法,将数组 int A[n]中的所有奇数移到所有偶数之前,要求时间复杂度为 O(n)。
1、试编写算法,将数组 int A[n]中的所有奇数移到所有偶数之前,要求时间复杂度为 O(n)。
1、 设一单链表,其结点结构为 data link,试编写算法,将所有数据域中内容为奇数的结点
移动至所有数据域中内容为偶数的结点之前。
2、 已知两个栈stack1与stack2共享存储空间A[1..n],其中stack1的栈底设在A[1]处,stack2
的栈底设在 A[n]处,分别编写两个栈 stack1 与 stack2 的进栈 push(i,x)、退栈 pop(i)和置
栈空 MakeEmpty(i)的函数,其中 i=1,2,并且只有整个存储空间 A[1..n]全部被占满时才
发生溢出问题。
2
1、设二叉树采用链表表示,各结点结构为 lchild data rchild,其中 data 为整数型字段,设计
一算法打印出其中值为正整数的结点值,并要求打印次序满足:每个结点不能比其孩子结点
先打印。
2、用非递归的方法求一棵二叉树的高度。二叉树每个结点的格式为:左孩子结点指针、数
据域、右孩子结点指针。
其中111是南京航空大学的2001的考研改编,
如下算法:
Var%2==1奇 Var%2==0偶 遍历两三遍时间复杂度也是O(n) O(3n)=O(n)
int JiShu[n]; int OuSh[n]; int CurJ=0; int CurO=0; for(int i=0; i<n; i ) { if(A%2==0) { OuSh[CurO ]=A; } else { JiSh[CurJ ]=A; } } // 然后把数组拼起来就可以了
} else { JiSh[CurJ ]=A; } }
上述几道算法还请高手赐教,谢谢!