一、单链表排序
仿照基于数组的冒泡排序算法
Node* Sorting_LinkList(Node* node)
{
if(node == NULL || node->next == NULL)
{
return node;
}
Node* result;
int temp = 0;
int len = Length_LinkList(node);
result = node;
for(int j = 0; j < len; j++)
{
result = node;
for(int i = 0; i < len-j; i++)
{
if(result->data > result->next->data)
{
temp = result->data;
result->data = result->next->data;
result->next->data = temp;
}
result = result->next;
}
}
return node;
}
二、单链表反转
Node* Reverse_LinkList(Node* node)
{
if(node == NULL || node->next == NULL)
{
return node;
}
Node *result, *s;
result=(Node*)malloc(sizeof(Node));
result->next = NULL;
int len = Length_LinkList(node);
for(int i = 0; i < len; i++)
{
//建立新结点
s=(Node*)malloc(sizeof(Node));
s->data = node->next->data;
//将s结点插入表头
s->next = result->next;
result->next = s;
node = node->next;
}
return result;
}
注:代码中所用到的计算单链表长度的Length_LinkList()函数请看“单链表基础”