一个建立双向循环链表的例子

来源:互联网 发布:分割线制作软件 编辑:程序博客网 时间:2024/05/18 17:58
struct Node *g_pstNodeHead = NULL;/* 此为全局变量 */
 
int func(struct Node *pstCurNode)
{
    struct Node *pstNode = pstCurNode;
    if (pstNode)
    {
        if (g_pstNodeHead == NULL)
        {
            pstNode->next = pstNode->prev = pstNode;
            g_pstNodeHead = pstNode;
        }
        else
        {
            /* 注意,以下顺序不能颠倒 */
           
            /* 建立顺序循环 */
            g_pstNodeHead->prev->next = pstNode;
            pstNode->next = g_pstNodeHead;
            /* 建立逆序循环 */
            pstNode->prev = g_pstNodeHead->prev;
            g_pstNodeHead->prev = pstNode;
        }
    }
    else
    {
        printf("NULL para \n");
    }
    return 0;
}
原创粉丝点击