双链表逆向输出

#include<stdio.h>
#include<stdlib.h>
#define NULL 0
typedef struct DLNode
{
    struct DLNode *prior,*next;
    int data;
}DLNode,*dlnode;

void createDlistR(dlnode &l,int n)
{
    dlnode p,q;
    l=(dlnode)malloc(sizeof(DLNode));
    p=l;
    for(int i=0;i<n;i++)
    {
        q=(dlnode)malloc(sizeof(DLNode));
        scanf("%d",&q->data);
        p->next=q;
        q->prior=p;
        p=q;
    }
    p->next=NULL;
}

void printList(dlnode l)
{
    dlnode p;
    p=l->next;
    while(p->next!=NULL)p=p->next;
    while(p!=l)
    {
        printf("%d ",p->data);
        p=p->prior;
    }
}

void main()
{
    dlnode l;
    int n;
    scanf("%d",&n);
    createDlistR(l,n);
    printList(l);
    printf("\n");
}



你可能感兴趣的:(链表)