请在 下方输入 要搜索的题目:

算法设计⑴设计一个时间复杂度为O (n)的算法,实现将数组 A[n]中所有元素循环右移k个位置。

算法设计⑴设计一个时间复杂度为O (n)的算法,实现将数组 A[n]中所有元素循环右移k个位置。

发布时间:2025-10-23 02:24:02
推荐参考答案 ( 由 快搜搜题库 官方老师解答 )
联系客服
答案:】 算法思想请参见主教材第一章思想火花。下面给出具体算法。从数组的两端向中间比较,设置两个变量 i和j,初始时i=0 , j=n-1 ,若A[i]为偶数并且 A[j]为奇数,则将 A[i] 与 A[j] 交换。具体算法如下:参见 2.2.3 。⑷ 试分别以顺序表和单链表作存储结构,各写一实现线性表就地逆置的算法。顺序表的逆置,即是将对称元素交换,设顺序表的长度为 length ,则将表中第 i 个元素与第length-i-1 个元素相交换。具体算法如下:单链表的逆置请参见 2.2.4 算法 2-4 和算法 2-6 。⑸ 假设在长度大于 1 的循环链表中,即无头结点也无头指针, s 为指向链表中某个结点的指针,试编写算 法删除结点 s 的前驱结点。利用单循环链表的特点,通过指针 s可找到其前驱结点r以及r的前驱结点p,然后将结点r删除,如图 2-11 所示,具体算法如下:⑹ 已知一单链表中的数据元素含有三类字符:字母、数字和其他字符。试编写算法,构造三个循环链表, 使每个循环链表中只含同一类字符。在单链表A中依次取元素,若取出的元素是字母,把它插入到字母链表 B中,若取出的元素是数字,则把它插入到数字链表 D中,直到链表的尾部,这样表 B,D, A中分别存放字母、数字和其他字符。 具体算法如下:⑺ 设单链表以非递减有序排列,设计算法实现在单链表中删去值相同的多余结点。从头到尾扫描单链表,若当前结点的元素值与后继结点的元素值不相等,则指针后移;否则删除 该后继结点。具体算法如下:⑻ 判断带头结点的双循环链表是否对称。设工作指针p和q分别指向循环双链表的开始结点和终端结点, 若结点p和结点q的数据域相等,则工作指针 p 后移,工作指针 q 前移,直到指针 p 和指针 q 指向同一结点 (循环双链表中结点个数为奇数) 或结点q成为结点p的前驱(循环双链表中结点个数为偶数)。如图 2-12所示。学习自测及答案
专业技术学习
专业技术学习
搜搜题库系统