(Bug横行,求指正)
//双向链表.cpp:定义控制台应用程序的入口点。
//作者Ricardo.M.Tan
#include"stdafx.h"
#include"malloc.h"
#include"string.h"
#include"stdio.h"
#include<iostream>
typedefintDataType;
typedefstructLNode{
DataType data;
structLNode *prior; //声明一个用于指向前一个节点的指针
structLNode *next; //声明一个用于指向后一个节点的指针
}LNode,*Link;
//创建链表
Link CreatList(){
Link head, tmp, p;
head = (Link)malloc(sizeof(DataType));
p = head;
intData;
scanf_s("%d",&Data);
while(Data != 0){
tmp =(Link)malloc(sizeof(DataType));
tmp->data= Data;
p->next= tmp;
tmp->prior= p; //在p指针前移之前完成后与前的链接,若将p=p->next;置于此句之前,则链表会断开
p =p->next;
scanf_s("%d", &Data);
}
//收尾,首尾互相扣接
p->next= head;
head->prior= p;
return(head);
}
//遍历链表
void output(LinkH){
Link p =H;
printf("正向链表:\n");
while(p->next !=H){
printf("%4d",p->next->data);
p =p->next;
}
p =H;
printf("反向链表:\n");
while(p->prior !=H){
printf("%4d", p->prior->data);
p =p->prior;
}
}
//主函数入口
int main(){
Link h = CreatList();
output(h);
system("pause"); //控制闪退
return0;
}