单向链表的排序操作?(一道笔试题,请给出程序,要求改变节点的指针,不能只交换值)

whizstorm 2004-11-18 09:22:07
typedef struct A
{
int data;
A *next;
}

要求根据 data 完成链表的升序?
...全文
210 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiggy 2004-11-18
  • 打赏
  • 举报
回复
你把node换成你的struct A就行啦
meiggy 2004-11-18
  • 打赏
  • 举报
回复
上面node如下:
template<class T>
class node
{
public:
node(const T& x,node* n = 0,node*p = 0):data(x),next(n),pre(p){};
T data;
node* next;
};
meiggy 2004-11-18
  • 打赏
  • 举报
回复
template<class T>
node<T>* sortlist(node<T>* &head)
{
assert(head != NULL);
node<T> *first = head;
node<T> *lesscur = NULL;
node<T> *precur;
node<T> *cur = head;
while(cur->next != NULL)
{
precur = cur;
cur = cur->next;
if(cur->data<precur->data)
{
while(cur->data >= first->data)
{
lesscur = first;
first = first->next;
}
if(lesscur == NULL)
{
precur->next = cur->next;
cur->next = first;
head = cur;
cur = precur;
lesscur = NULL;
}
else
{
precur->next = cur->next;
lesscur->next = cur;
cur->next = first;
cur = precur;
lesscur = NULL;
}
first = head;
}
}
return head;
}

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧