码迷,mamicode.com
首页 > 编程语言 > 详细

C语言实现双向非循环链表(带头结点尾结点)的节点插入

时间:2016-03-04 16:30:20      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

       对于双向链表,个人推荐使用带头结点尾结点的方式来处理会比较方便。我在《C语言实现双向非循环链表(不带头结点)的节点插入》中详细实现了在不带头结点的情况下的插入。这次我们将会来在使用头结点尾结点的情况下在任意的位置插入元素。代码上传至 https://github.com/chenyufeng1991/InsertNodeDoubleLinkedList_HeadNode 。

核心代码如下:

//插入一个节点
//插入位置分别为0,1,2,.....
int InsertNodeList(Node *pHead,Node *pTail,int pos,int x){

    int i = 0;
    Node *pMove;
    Node *pInsert;
    pInsert = (Node *)malloc(sizeof(Node));
    memset(pInsert, 0, sizeof(Node));
    pInsert->prior = NULL;
    pInsert->next = NULL;
    pInsert->element = x;

    pMove = pHead;
    while (pMove != pTail) {
        if (i == pos) {
            //注意这里的链接顺序
            pMove->next->prior = pInsert;
            pInsert->next = pMove->next;
            pMove->next = pInsert;
            pInsert->prior = pMove;

            printf("%s函数执行,在pos=%d位置插入x=%d节点成功\n",__FUNCTION__,pos,x);
            return 1;
        }
        i++;
        pMove = pMove->next;
    }

    printf("%s函数执行,插入元素失败\n",__FUNCTION__);

    return 0;
}


C语言实现双向非循环链表(带头结点尾结点)的节点插入

标签:

原文地址:http://blog.csdn.net/chenyufeng1991/article/details/50803424

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!