您的位置:首页 > 其它

链表问题,逆序打印链表,改变链表指向方向

2014-06-04 15:45 211 查看
#include<stdio.h>
#include<stdlib.h>
typedef struct TreeNode
{
int key;
struct TreeNode* next;

}Node,*ptrNode;
//逆序打印链表
void ReversePrint(ptrNode phead)
{
if(phead==NULL)
return;
if(phead->next!=NULL)
{
ReversePrint(phead->next);
}
printf("%d  ",phead->key);

}
//改变链表指针方向,反向指向,时间复杂度为O(n)
ptrNode ChangePtr(ptrNode phead)
{
if(phead==NULL)
return NULL;
ptrNode ptmp,pnext;
ptmp=NULL;
pnext=phead->next;
while(phead!=NULL)
{
phead->next=ptmp;
ptmp=phead;
phead=pnext;
if(pnext!=NULL)
pnext=pnext->next;
else
break;

}
return ptmp;

}
void main()
{
int i;
ptrNode ptmp,phead,ptr,ptrNew;
phead=(ptrNode)malloc(sizeof(Node));
phead->key=0;
ptr=phead;
for(i=0;i<10;i++)
{
ptmp=(ptrNode)malloc(sizeof(Node));
ptmp->key=i+1;
ptmp->next=NULL;
ptr->next=ptmp;
ptr=ptr->next;
}
ReversePrint(phead);
ptrNew=ChangePtr(phead);
printf("\n");
ReversePrint(ptrNew);
printf("\n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐