输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
想法:使用双向链表
#include<stdio.h>
#include <malloc.h>
typedef struct LinkNode{
int data;
struct LinkNode *front,*next;
}LinkNode,*LinkList;
void InitList(LinkList &L,int n){//初始化链表
L=(LinkList)malloc(sizeof(LinkNode));
L->next=NULL;//头结点初始化
L->front=NULL;
LinkNode *p,*pre=L;
for(int i=0;i<n;i++){
p=(LinkList)malloc(sizeof(LinkNode));
scanf("%d",&p->data);
p->next=NULL;
pre->next=p;
p->front=pre;
pre=pre->next;
p=p->next;
}
printf("数据输入完毕!\n");
}
void VisitList(LinkList L){
LinkNode *p=L->next;
while(p->next!=NULL){
p=p->next;
}
while(p!=L){
printf("%d ",p->data);
p=p->front;
}
printf("\n");
}
int main(){
LinkList L;
int n;
while(~scanf("%d",&n)){
InitList(L,n) ;
VisitList(L);
}
}