注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

火车的家

Put first thing first

 
 
 

日志

 
 

2015.03.02 List 1  

2015-03-02 16:53:52|  分类: 技术博客 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Attention: 
The content in the article comes from book "Code interview".

Question:
Please implement a function to print a list from its tail to head.

Answer:
Recursive and stack can be used in this problem also.
#include <stdlib.h>
#include <stdio.h>

struct link_node {
    char value;
    struct link_node * next;
};

struct link_node * g_list = NULL;

void list_append( char para )
{
    struct link_node * p_node = (struct link_node *) malloc( sizeof (struct link_node) );

    p_node->value = para;
    p_node->next = g_list;

    g_list = p_node;
}

void list_free()
{
    struct link_node * the_previous = NULL;

    while ( g_list ) {
        the_previous = g_list;

        free( the_previous );

        g_list = g_list->next;
    }
}

void dump_list_tail2head( struct link_node * the_list )
{
    struct link_node * the_previous = NULL;
    struct link_node * the_current = NULL;

    while ( the_list ) {
        the_current = the_list;
        the_list = the_current->next;

        the_current->next = the_previous;
        the_previous = the_current;
    }

    while( the_current ) {
        printf("the_current = %d\n", the_current->value);

        the_current = the_current->next;
    }
}

int main ( int argc, char argv[] )
{
    list_append('a');
    list_append('b');
    list_append('c');
    list_append('d');
    list_append('e');
    list_append('f');
    list_append('g');

    dump_list_tail2head( g_list );

    list_free();

    return 0;
}
  评论这张
 
阅读(228)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017