在链表这一部分,面试中会经常遇到链表(单链表)的一些面试题。从简单到难,今天先总结一下比较简单的一个,就是让你从尾到头的把链表打印出来。遇到这种让我们反向来输出一组数据的题目,我们应该时刻记着有递归这样一个东西。说到这里相信大家都知道该怎么办了,可以自己写一写,真的比从头到尾打印都要简单。当然我是从最简单的题目开始发表,其实我们遇到简单的问题不要眼高手低,对于很多像我一样将要面临找工作的大学生来说,面试真的可能遇到很简单的问题,但就要求你不能出一点错,所以还是要自己敲一敲代码。
如果你已经自己知道该怎么做了,自己敲了代码,并打印正确,呢么你可以不再往下看了,期待明天的问题吧。
当然这只是一个函数,如果要测试的话还得之前就写好链表的一些基本操作函数,比如定义好链表的结构,写好它的一些插入,尾插头插,删除,显示等函数,这些面试题的测试实现都是建立在你的基本操作函数已经写好的基础上的。
先放上我自己的链表结构体:
typedef struct strnode { int data; struct strnode* pnext; }Node,*PNode;
还有就是我在设计的时候链表是没有头结点的,在初始化的时候初始化了一个头指针pHead,一般我们经被考到的都是不带头结点的链表。下面是我的链表的初始化函数:
void initseqlist(PNode *pHead) { assert(pHead); *pHead = NULL; }
printReverse函数就是我的从尾到头打印链表函数:
void printReverse(PNode pHead) { if (pHead == NULL) { return; } else { printReverse(pHead->pnext); printf("%d->", pHead->data); } }