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

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;
}

你可能感兴趣的:(一个建立双向循环链表的例子)