例如链表数据有:1 2 3 4 5 6 7 8 910
左移2位 结果为 3 4 5 6 7 8 9 10 1 2
需要处理边界情况 :左移11位 显示错误 ,左移0位 显示错误 ,左移10位 显示错误。
void leftshift(LinkList List, int num)
{
int cnt = 0;//表示当前的位置
LinkList now = List;//用于遍历链表
LinkList p = NULL;//第num个节点的地址
while (now->next != NULL)
{
now = now->next;
cnt++;
if (cnt == num)//找到了第num个节点的地址
{
p = now;
}
}
//说明找到了第num个节点的地址,并且这个节点不位于链表的最末端
if (p != NULL&&p->next != NULL)
{
LinkList StartNode = List->next;//开始节点
List->next = p->next;//头节点连接到第num+1个节点
p->next = NULL;//要移动的链表断开与原链表的连接
now->next = StartNode;//把开始节点到NUM的数据插入尾
}
else
{
cout << "erro!!!" << endl;
}
}