#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct dlink{
int data;
struct dlink *prior;
struct dlink *next;
}LINK;
void append_dlink(LINK *head,LINK *node){
printf("----------------------------\n");
printf("head:>>>>%p\n",head);
printf("node:%p\n",node);
LINK *p = head;
node->next=p->next;
node->prior=p->prior;
p->prior=node;
printf("prior:%p\n",head->prior);
printf("nodeprior:%d\n",node->data);
printf("nodeprior:%d\n",node->prior->data);
printf("nodeprior:%d\n",node->prior->prior->data);
printf("nodeprior:%d\n",node->prior->prior->prior->data);
printf("nodeprior:%d\n",node->prior->prior->prior->prior->data);
printf("----------------------------------------\n");
printf("nodeprior:%d\n",node->data);
printf("nodeprior:%d\n",node->next->data);
printf("nodeprior:%d\n",node->next->next->data);
printf("nodeprior:%d\n",node->next->next->next->data);
printf("nodeprior:%d\n",node->next->next->next->next->data);
}
void crt_dlink(LINK *head,int n){
LINK *tail = head,*p;
int i=0;
for(i = 0;i<n;i++){
p = (LINK *)malloc(sizeof(LINK));
printf("请输入第%2d个zhi:",i+1);
scanf("%d",&p->data);
tail->next=p;
p->prior = tail;
tail = p;
}
head->prior=tail;
tail->next= head;
}
void show_dlink(LINK *head){
LINK *p = head->next;
printf("reverse traversal:\n");
while(p!=head){
printf("==>%d\n",p->data);
p = p->next;
}
}
int main(){
LINK *head,*node;
head =(LINK *)malloc(sizeof(LINK));
head->prior = NULL;
head->next = NULL;
int n = 0;
printf("please input: ");
do{
scanf("%d",&n);
}while(n==0);
crt_dlink(head,n);
printf(">>>>>>>>>>>>>>%p\n",head);
// show_dlink(head);
LINK *nodeNew=(LINK *)malloc(sizeof(LINK));
nodeNew->prior=NULL;
nodeNew->next=NULL;
nodeNew->data=100;
append_dlink(head,nodeNew);
show_dlink(head);
}
#include <string.h>
#include <stdlib.h>
typedef struct dlink{
int data;
struct dlink *prior;
struct dlink *next;
}LINK;
void append_dlink(LINK *head,LINK *node){
printf("----------------------------\n");
printf("head:>>>>%p\n",head);
printf("node:%p\n",node);
LINK *p = head;
node->next=p->next;
node->prior=p->prior;
p->prior=node;
printf("prior:%p\n",head->prior);
printf("nodeprior:%d\n",node->data);
printf("nodeprior:%d\n",node->prior->data);
printf("nodeprior:%d\n",node->prior->prior->data);
printf("nodeprior:%d\n",node->prior->prior->prior->data);
printf("nodeprior:%d\n",node->prior->prior->prior->prior->data);
printf("----------------------------------------\n");
printf("nodeprior:%d\n",node->data);
printf("nodeprior:%d\n",node->next->data);
printf("nodeprior:%d\n",node->next->next->data);
printf("nodeprior:%d\n",node->next->next->next->data);
printf("nodeprior:%d\n",node->next->next->next->next->data);
}
void crt_dlink(LINK *head,int n){
LINK *tail = head,*p;
int i=0;
for(i = 0;i<n;i++){
p = (LINK *)malloc(sizeof(LINK));
printf("请输入第%2d个zhi:",i+1);
scanf("%d",&p->data);
tail->next=p;
p->prior = tail;
tail = p;
}
head->prior=tail;
tail->next= head;
}
void show_dlink(LINK *head){
LINK *p = head->next;
printf("reverse traversal:\n");
while(p!=head){
printf("==>%d\n",p->data);
p = p->next;
}
}
int main(){
LINK *head,*node;
head =(LINK *)malloc(sizeof(LINK));
head->prior = NULL;
head->next = NULL;
int n = 0;
printf("please input: ");
do{
scanf("%d",&n);
}while(n==0);
crt_dlink(head,n);
printf(">>>>>>>>>>>>>>%p\n",head);
// show_dlink(head);
LINK *nodeNew=(LINK *)malloc(sizeof(LINK));
nodeNew->prior=NULL;
nodeNew->next=NULL;
nodeNew->data=100;
append_dlink(head,nodeNew);
show_dlink(head);
}