#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");
}
鏈表問題,逆序打印鏈表,改變鏈表指向方向
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.