早教吧作业答案频道 -->其他-->
写出算法已知线性表中的元素以值递增的有序排列,并以单链表做存储结构,是写一高效的算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素)
题目详情
写出算法
已知线性表中的元素以值递增的有序排列,并以单链表做存储结构,是写一高效的算法,删除表中所有值大于mink且小于maxk的 元素(若表中存在这样的元素)
已知线性表中的元素以值递增的有序排列,并以单链表做存储结构,是写一高效的算法,删除表中所有值大于mink且小于maxk的 元素(若表中存在这样的元素)
▼优质解答
答案和解析
// hello,enjoy it
1.假设单链表的节点数据结构为
struct node
{
TYPE data;
node* pnext;
};
2.假设链表的第一个节点的指针为first.
3.删除不在范围内的节点的方法如下:
node* tmp;
//首先删除不在范围内的第一个节点
while(first->data>mink||first->->datanext; //新的第一个节点
delete tmp;
}
//遍历后面的节点
node* pprenode = first; //当前节点的前一个节点.
for(node* pcurrentnode=first->next;pcurrentnode != null;node* pcurrentnode = pcurrentnode->next)
{
if(pcurrentnode->data>mink||pcurrentnode->datanext;
pcurrentnode = pprenode; //更新当前节点,原来的当前节点被删除了!
delete pcurrentnode;
}
pprenode = pcurrentnode; // 记录当前节点的指针,
}
//注意的问题,在实际编程时防止指针访问越界,这里没有仔细考虑这个问题.^^
1.假设单链表的节点数据结构为
struct node
{
TYPE data;
node* pnext;
};
2.假设链表的第一个节点的指针为first.
3.删除不在范围内的节点的方法如下:
node* tmp;
//首先删除不在范围内的第一个节点
while(first->data>mink||first->->datanext; //新的第一个节点
delete tmp;
}
//遍历后面的节点
node* pprenode = first; //当前节点的前一个节点.
for(node* pcurrentnode=first->next;pcurrentnode != null;node* pcurrentnode = pcurrentnode->next)
{
if(pcurrentnode->data>mink||pcurrentnode->datanext;
pcurrentnode = pprenode; //更新当前节点,原来的当前节点被删除了!
delete pcurrentnode;
}
pprenode = pcurrentnode; // 记录当前节点的指针,
}
//注意的问题,在实际编程时防止指针访问越界,这里没有仔细考虑这个问题.^^
看了 写出算法已知线性表中的元素以...的网友还看了以下:
《计算机组成原理》试题疑问,若主存储器数据区的地址与单元内容之间对应关系如下,指令给出地址码A=2 2020-04-26 …
存储一个32位数Ox2168465到2000H~2003H四个字节单元中,若以大端模式存储, 则20 2020-05-26 …
存储一个32位数Oxl2345678到2000H-2003H四个字节单元中,若以大端模式存储,则20 2020-05-26 …
若内存地址区间为4000H—43FFH,每个存储单元可存储16位二进制数,该内存区域由4片存储器芯片 2020-05-26 …
若将四个字节作为一个存储单位,则一个32K的存储器共有(6)个存储单位。A.8192B.32768C 2020-05-26 …
CPU访问存储器时,被访问数据一般聚集在一个较小的连续存储区域中。若一个存储单元已被访问,则其邻近的 2020-05-26 …
存储一个32位数0x876165到2000H~2003H四个字节单元中,若以小端模式存储,则2000 2020-05-31 …
有关存储地址的说法,不正确的是:A地址与存储单元是一一对应的关系.B存储单元的地址编码是认为手工划分 2020-11-30 …
内存条与存储单元的关系。原题:256M内存条说明它()A.有256M个存储单元B.容内存条与存储单元 2020-12-28 …
线性表若采用链式存储结构时,要求内存中可用存储单元的地址。 A.必须是连续的 B.线性表若采用链式存 2020-12-28 …