准备工作,建立结构体
typedef struct linkedlist{
struct linkedlist *last;
int num;
struct linkedlist *next;
}Lili;
建立全局变量
Lili *head,*node,*tail
创建双向链表
void create(){
node=(Lili*)malloc(sizeof(Lili)); //创建第一个节点
head=node;
tail=node;
head->last=NULL; //将头节点的last和next指空
head->next=NULL;
while(1){
scanf("%d",&node->num);
if(node->num==-1){ //判断输入的num是否为-1
break;
}
node=(Lili*)malloc(sizeof(Lili)); //创建新节点
node->last=tail; //将新节点的last指向上一个节点,tail指向的是上一个节点
tail->next=node; //将上一个节点的next指向新节点
tail=node; //完成了last和next的衔接后,将尾指针指向node
}
tail=tail->next; //因为最后还创建了一个新的空节点,所以尾节点应该向后退一格
}
逆向打印链表
void reversePrint(){
Lili *tmp=tail;
while(tmp!=NULL){
printf("%d ",tmp->num);
tmp=tmp->last;
}
}