数据结构问题 C语言解答 线性表的就地逆置
展开全部
//逆置顺序表中的元素的算法
void SeqListReverse(SeqList *L)
{
int temp,i;
for(i=0;i<L->length/2;i++)
{
temp=L->data[i];
L->data[i]=L->data[L->length-1-i];
L->data[L->length-1-i]=temp;
}
}
/*逆置单链表中的元素的算法*/
void LinkedListReverse(LinkedList L)//其中LinkedList等价于LNode *
{
LinkedList p,q;
if(L->next && L->next->next)
{
q=p=L->next;
q=q->next;
p->next=NULL;
while(q)
{//每次循环将后一个结点变成新链表的第一个结点
p=q;
q=q->next;
p->next=L->next;
L->next=p;
}
}
}
上面的两个算法我都用完整的C源程序测试过了,没有问题的,希望这个对你有帮助哦,望采纳啊。如果你需要完整的源程序,请在评论里留言吧。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询