数据结构复习笔记(二)——线性表的链式存储结构之循环链表

循环链表

单链表终端结点的指针指向头节点


空表
非空循环链表

循环链表的创建

参考 https://blog.csdn.net/qq_29542611/article/details/79029540

typedef struct CLinkNode
{
    Elemtype data;
    struct CLinkNode *next;
}CLinkNode, *CLinkList;

void IniteCLinkList(CLinkList *L) {
    int data = 0;
    CLinkNode *target = NULL;
    CLinkNode *head_node = NULL;
    cout << "输入数据,0代表结束" << endl;
    while (1) {
        cin >> data;
        if (data == 0) {
            break;
        }

        if (*L == NULL) {
            CLinkNode *head = (CLinkNode*)malloc(sizeof(CLinkNode));
            
            *L = head; //链表指向头结点

            CLinkNode *node = (CLinkNode*)malloc(sizeof(CLinkNode));
            node->data = data;
            node->next = head;
            head->next = node;
        }
        else
        {
            for (target = (*L)->next; target->next != *L; target = head_node = target->next) {
                head_node = target->next;

                CLinkNode* node = (CLinkNode*)malloc(sizeof(CLinkNode));
                
                node->data = data;
                node->next = head_node;

                target->next = node;//将新结点插入尾部

            }
        }

    }
    

}

你可能感兴趣的:(数据结构复习笔记(二)——线性表的链式存储结构之循环链表)