题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。

来源:互联网 发布:软件工具箱制作 编辑:程序博客网 时间:2024/04/27 20:37

  题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下:
 struct ListNode
  {
        int       m_nKey;
        ListNode* m_pNext;
  };
  分析:这是一道很有意思的面试题。
  该题以及它的变体经常出现在各大公司的面试、笔试题中。




#include <stdio.h>#include <stdlib.h>struct ListNode {    int        m_nKey;    struct ListNode* m_pNext;};void create_list(struct ListNode **pLn, int *arr, int i,  int len){    struct ListNode *n;    if (i >= len) {        *pLn =  NULL;        return;    }    n = (struct ListNode *) malloc(sizeof(struct ListNode));    n->m_nKey = arr[i];    *pLn = n;    i++;    create_list(&(n->m_pNext), arr, i , len);}void show(struct ListNode *ln){    if (ln == NULL) {        return;    }        show(ln->m_pNext);    printf("%d ", ln->m_nKey);}int main(){    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};    struct ListNode *list;    create_list(&list, a, 0, 10);    printf("---------------\n");    show(list);    printf("\n---------------\n");    return 0;}


0 0
原创粉丝点击