顺序表和单链表的逆置
- 顺序表的逆置
算法思想:首尾节点不断进行交换
void reverse(SqList &L)
{
int i,j;
int temp;//中间变量
i = 0,j = L.length-1;//i指向表头,j指向表尾``
while(i < j) //i,j相遇循环结束
{
temp = L.data[i];
L.data[i] = L.data[j];
L.data[j] = temp;
i++;
j--;
}
}
- 单链表的逆置
算法思想:采用头插法使原来的单链表完成逆置
void reverse(LNode *&L)
{
LNode *p,*q;//p指向第一个元素,q指向第二个元素
p = L->next;
q = L->next->next;
L->next = NULL;//断开原来的链表,作为新的链表使用
while(p != NULL)
{
p->next = L->next;
L->next = p;//这两句是头插法的关键
p = q; //p指针向后移动
q = q->next;//q指针向后移动
}
}