双向链表的问题
#include <stdio.h>#include <malloc.h>typedef struct node{ int Data; node *left; node *right;}*Pnode;typedef struct Link{ Pnode Head; int Length;}*PLink;PLink InitLink(){ PLink P=(PLink)malloc(sizeof(Link)); P->Head=(Pnode)malloc(sizeof(node)); P->Head->left=NULL; P->Head->right=NULL; P->Length=0; return P;}void InsertNode(PLink P,int Elem){ Pnode Nnode=(Pnode)malloc(sizeof(node)); Nnode->Data=Elem; Nnode->right=NULL; Pnode H=P->Head; if (!H->right) { P->Head->right=Nnode; Nnode->left=P->Head; } else while(H->right) { H=H->right; } H->right=Nnode; Nnode->left=H; P->Length++;}void ShowLink(PLink P){ Pnode H=P->Head; while (H->right) { printf("%d ",H->right->Data); H->right=H->right->right; } printf("\n");}void ResShow(PLink P)//逆序输出,也有问题。{ Pnode T=P->Head; while (T->right) { T->right=T->right->right; } while (T->left) { printf("%d ",T->left->Data); T->left=T->left->left; }}int main(){ PLink P= InitLink(); for(int i=0;i<=5;i++) { InsertNode(P,i); } printf("%d \n",P->Head->right->Data);//这个可以输出。 ShowLink(P); //printf("%d ",P->Head->right->Data);//这个为什么输出不了? //ResShow(P); getchar(); return 0;}