typedef int data_t;
typedef struct linklist
{
data_t data;
struct linklist *next;
}Linklist; //全局变量结构体定义
void Linklist_nixu(Linklist *head)
{
Linklist *p = head->next; //指向原表中首元素的指针
Linklist *node = head->next; //搜寻表尾的指针
Linklist *q = NULL;
Linklist *temp = head;
while(p->next != NULL) //原表首元素的下一个节点为NULL时停止循环(原首元素到表尾)
{
while(node->next != NULL) //node搜寻到表尾停止循环
{
q = node; //q跟随node,每次循环结束指向node的前一位
node = node->next; //循环向后寻找表尾
}
Linklist_insert_headnode(temp,node);//自定义的节点插入函数,在temp后插入寻找到的结尾
q->next = NULL;//将q所指向的节点的next赋空作为新结尾
q = NULL; //重置q指针(或许没有必要)
node = temp->next; //node从头并跳过已经完成重排的元素开始遍历
temp = temp->next; //temp指针向后偏移
}
return;
}
void Linklist_insert_headnode(Linklist *head,Linklist *node)
{
if(node == NULL)
{
return;
}
node->next = head->next;
head->next = node;
return;
} //节点插入函数,将指定节点node插入到指定节点head节点之后