面试题5

来源:互联网 发布:求矩阵的行列式的值 编辑:程序博客网 时间:2024/06/02 03:55

1 题目描述

输入一个链表的头指针,从尾到头反过来打印出每一个节点的值


2 算法描述

第一个遍历到的节点最后一个输出,而最后一个遍历到的节点第一个输出,典型的“后进先出”,可以用栈实现这种顺序。既然想到用栈来实现这个函数,而递归在本质上就是一个栈结构,于是很自然地又想到了用递归来实现。

#include <stdio.h>typedef char datatype;typedef struct node{    datatype data;    struct node *next;} listnode;typedef listnode *linklist;linklist creater(){    char ch;    linklist head;    listnode *p,*r;    head=NULL;    r=NULL;/*r为尾指针*/    while((ch=getchar())!='\n'){        p=(listnode *)malloc(sizeof(listnode));        p->data=ch;        if(head==NULL)            head=p;/*head 指向第一个插入结点*/        else            r->next=p;/*插入到链表尾部*/        r=p;/*r指向最新结点,即最后结点*/     }     if(r!=NULL)          r->next=NULL;/*链表尾部结点的后继指针指定为空*/     return head; } void printlistreversingly_iteratively(listnode* head){    if(head==NULL){        return;    }else{        printlistreversingly_iteratively(head->next);        printf("%c",head->data);    }}main(){    linklist newlist=creater();    printlistreversingly_iteratively(newlist);}
0 0