当前位置: 首页> 娱乐> 八卦 > 手机中关村在线报价大全_龙口网站开发_如何在互联网推广自己的产品_网站快速优化排名软件

手机中关村在线报价大全_龙口网站开发_如何在互联网推广自己的产品_网站快速优化排名软件

时间:2025/7/9 17:39:52来源:https://blog.csdn.net/greengirl5/article/details/146444163 浏览次数:0次
手机中关村在线报价大全_龙口网站开发_如何在互联网推广自己的产品_网站快速优化排名软件

在这里插入图片描述
思路:主要是确定,虚拟头节点不算个数,从第一个正式节点开始计数,下标从0开始,这个确定了就写就完了

typedef struct Node // 定义节点
{int val;struct Node* next;
} Node;typedef struct MyLinkedList // 定义链表
{int size;    // 链表中节点的数量Node* head;  // 指向链表头结点的指针
} MyLinkedList;// 初始化 MyLinkedList
MyLinkedList* myLinkedListCreate() 
{MyLinkedList* obj = (MyLinkedList*)malloc(sizeof(MyLinkedList)); // 定义一个空链表Node* dummyhead = (Node*)malloc(sizeof(Node)); // 定义一个空节点dummyhead->next = NULL;obj->head = dummyhead; // 头结点指向空节点obj->size = 0; // 设置链表节点数量为 0return obj;
}// 获取链表中下标为 index 的节点的值
int myLinkedListGet(MyLinkedList* obj, int index) 
{if (index < 0 || index >= obj->size) // 索引超出范围return -1;Node* cur = obj->head->next; // 从头结点的下一个节点开始while (index--){cur = cur->next;}return cur->val;
}// 在头部插入节点
void myLinkedListAddAtHead(MyLinkedList* obj, int val) 
{Node* newNode = (Node*)malloc(sizeof(Node)); // 分配新节点newNode->val = val;newNode->next = obj->head->next; // 新节点指向原头节点obj->head->next = newNode; // 头节点指向新节点obj->size++; // 更新链表大小
}// 在尾部插入节点
void myLinkedListAddAtTail(MyLinkedList* obj, int val) 
{Node* newNode = (Node*)malloc(sizeof(Node));newNode->val = val;newNode->next = NULL;Node* cur = obj->head;while (cur->next != NULL) {cur = cur->next;}cur->next = newNode;obj->size++;
}// 在指定位置插入节点
void myLinkedListAddAtIndex(MyLinkedList* obj, int index, int val) 
{if (index < 0 || index > obj->size) // 插入位置超出范围return;Node* newNode = (Node*)malloc(sizeof(Node));newNode->val = val;Node* cur = obj->head;while (index--){cur = cur->next;}newNode->next = cur->next;cur->next = newNode;obj->size++;
}// 删除指定位置节点
void myLinkedListDeleteAtIndex(MyLinkedList* obj, int index) 
{if (index < 0 || index >= obj->size) // 索引超出范围return;Node* cur = obj->head;while (index--){cur = cur->next;}Node* toDelete = cur->next;cur->next = toDelete->next;free(toDelete);obj->size--;
}// 释放链表
void myLinkedListFree(MyLinkedList* obj) 
{Node* cur = obj->head;while (cur != NULL) {Node* next = cur->next;free(cur);cur = next;}free(obj);
}
关键字:手机中关村在线报价大全_龙口网站开发_如何在互联网推广自己的产品_网站快速优化排名软件

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: