首页 > 其他 > 详细

链表

时间:2014-02-23 11:57:43      阅读:334      评论:0      收藏:0      [点我收藏+]

整理一下硬盘里关于链表的知识,温故而知新。

链表是一种物理存储单元上非连续、非顺序的存储结构。其特点是有头尾结点,除头结点外,其它结点都只有一个前驱,除尾结点外,其它结点都只有一个后继。


常见的链表有单向链表,双向链表,循环链表。


单向链表的结构一般这样写

typedef struct listnode
{
        int val;
        struct listnode *next;
}List;

一般来说链表的结构体只包含一个数据,一个指向后继结点的指针。如果是树或双链表,结构体会多一个指针。

单向链表的操作:

创建链表

List* create_list(int val)
{
        List *head = (List *)malloc(sizeof(List)/sizeof(char));

        if(NULL == head)
        {
                return NULL;
        }

        head->val = val;

        head->next = NULL;

        return head;
}

插入结点

List* insert_listnode(List *head, int val)
{
        List *temp;
        if(NULL == head)
        {
                return NULL;
        }

        temp = (List *)malloc(sizeof(List)/sizeof(char));
        temp->val = val;
        temp->next = head;
        head = temp;

        return head;
}

删除链表

void delete_list(List *head)
{
        List *temp = NULL;
        if(head != NULL)
        {
                temp = head;
                head = head->next;
                free(temp);
                temp = NULL;

                delete_list(head);
        }
}

统计节点个数

int count_listnode(List *head)
{
        static int count = 0;
    
        if(NULL != head)
        { 
                count += 1;
                if(head->next != NULL)
                { 
                        count_listnode(head->next);
                } 

                return count;
        }
}

顺序打印

void fdprint_listnode(List *head)
{
        if(NULL != head)
        {
                printf("%d\t",head->val);
                if(head->next != NULL)
                {
                        fdprint_listnode(head->next);
                }
        }
}

反向打印(面试题常出)

void bkprint_listnode(List *head)
{
        if(head != NULL)
        {
                if(head->next != NULL)
                {
                        bkprint_listnode(head->next);
                }

                printf("%d\t",head->val);
        }
}



链表

原文:http://blog.csdn.net/losophy/article/details/19702093

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!