早教吧 育儿知识 作业答案 考试题库 百科 知识分享

写出算法已知线性表中的元素以值递增的有序排列,并以单链表做存储结构,是写一高效的算法,删除表中所有值大于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; // 记录当前节点的指针,
}
//注意的问题,在实际编程时防止指针访问越界,这里没有仔细考虑这个问题.^^