源代码:
void dao_visit(Link *l)
{
Link* rcv=l
Link* rcv2=rcv
int* a
int lenth=0
int i=0
//获得单链表长度
while(rcv)
{
lenth++
rcv=rcv->next
}
//为指针a分配lenth个空间
a=(int *)malloc(lenth*sizeof(int))
//将单链表的数据写入a中
while(rcv2)
{
a[i]=rcv2->data
rcv2=rcv2->next
i++
}
//倒序输出
for(i=0i<lenthi++)
printf("%d\n",a[lenth-1-i])
free(a)
}
运行结果截图:这是一个函数,我测试过了,可行。既然不是一个可运行程序,我就不截图了
简单说一下思路吧1、该单链表已经是递增有序的了,那么只需在遍历这个单链表的过程中,将e与遍历到的这个节点、这个节点的下一个节点的值相比较,如果e的值大于当前节点,且e小于等于当前节点下一节点,那么将e插入到当前节点后
2、若循环起始节点为a节点,其下一节点a->next=b;则对a与b进行原地转置首先需要将b的next指针保存下来(如保存为tempPionter),然后再让b->next指向a,之后再让a=b,b=tempPointer,然后再对上述 *** 作进行循环,最终可得该链表的原地转置链表
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)