数据结构单向链表

21次阅读

共计 856 个字符,预计需要花费 3 分钟才能阅读完成。

单向列表节点

        typedef struct Node {
            int data;
            struct Node *next;
        } LinkNode;

单链表创建 反转链表 删除节点

         // 创建节点
        LinkNode *rootNode = malloc(sizeof(LinkNode));
        rootNode->data = 1;
        rootNode->next = NULL;
        
        LinkNode *node1 = malloc(sizeof(LinkNode));
        node1->data = 2;
        node1->next = NULL;
        
        LinkNode *node2 = malloc(sizeof(LinkNode));
        node2->data = 3;
        node2->next = NULL;
        
        // 生成链表
        rootNode->next = node1;
        node1->next = node2;
        
        // 反转链表
        LinkNode *node = reverseLink(rootNode);
        
        // 删除链表中的值为 3 元素
        deleteLinkElement(node, 2);

反转链表

        LinkNode* reverseLink(LinkNode *node){if (node == NULL) {return NULL;}
            LinkNode *pre = NULL;
            while (node) {
                LinkNode *nextTemp = node->next;
                node->next = pre;
                pre = node;
                node = nextTemp;
            }
            return pre;
        }

删除链表节点

        LinkNode* deleteLinkElement(LinkNode *node, int element) {if (node == NULL) {return NULL;}
            LinkNode *pre = NULL;
            
            while (node) {
                LinkNode *nextTemp = node->next;
                if (node->data == element) {if (pre) {pre->next = nextTemp;} else {*node = *nextTemp;}
                }
                pre = node;
                node = nextTemp;
            }
            return pre;
        }

正文完
 0