线性表的链式存储API
2016-08-16 20:47
204 查看
函数接口实现如下:
</pre><pre name="code" class="cpp">
#include <iostream> #include <cstdlib> #include <cstring> #include "linklist.h" typedef struct _LinkList { int length; LinkListNode header; }TLinkList; //ps:让业务节点包含自己写的链表 LinkList* LinkList_Create() { TLinkList *ret = (TLinkList*)malloc(sizeof(TLinkList)); if (ret == NULL) { return NULL; } memset(ret, 0, sizeof(TLinkList)); ret->header.next = NULL; ret->length = 0; } void LinkList_Destroy(LinkList* list) { if (list == NULL) { return; } free(list); list = NULL; return; } void LinkList_Clear(LinkList* list) { if (list == NULL) { return; } TLinkList * q_tmp = NULL; q_tmp = (TLinkList *)list; q_tmp->length = 0; q_tmp->header.next = NULL; return; } int LinkList_Length(LinkList* list) { int tmp; TLinkList * q_tmp = NULL; if (list == NULL) { return -1; } q_tmp = (TLinkList *)list; tmp = q_tmp->length; return tmp; } //向一个链表LinkList的pos位置处插入新元素node int LinkList_Insert(LinkList* list, LinkListNode* node, int pos) { <span style="white-space:pre"> </span>int i = 0; <span style="white-space:pre"> </span>TLinkList *<span style="white-space:pre"> </span>q_tmp = NULL; <span style="white-space:pre"> </span>q_tmp = (TLinkList *)list; <span style="white-space:pre"> </span>LinkListNode *current = NULL; <span style="white-space:pre"> </span> <span style="white-space:pre"> </span>if (list == NULL||node == NULL) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>return -1; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>current = &q_tmp->header; <span style="white-space:pre"> </span>//current = (LinkListNode *)q_tmp; <span style="white-space:pre"> </span>for (i = 0; (i < pos) && (current->next != NULL); i++) <span style="white-space:pre"> </span>{ <span style="white-space:pre"> </span>current = current->next; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>node->next = current->next; <span style="white-space:pre"> </span>current->next = node; <span style="white-space:pre"> </span>q_tmp->length++; <span style="white-space:pre"> </span>return 0; } LinkListNode* LinkList_Get(LinkList* list, int pos) { int i = 0; TLinkList * q_tmp = NULL; if (list == NULL) { return NULL; } q_tmp = (TLinkList *)list; LinkListNode *current = NULL; LinkListNode *ret = NULL; if (pos < 0 || pos >= q_tmp->length) { return NULL; } current = &q_tmp->header; for (i = 0; (i < pos) && (current->next != NULL); i++) { current = current->next; } ret = current->next; return ret; } LinkListNode* LinkList_Delete(LinkList* list, int pos) { int i = 0; TLinkList * q_tmp = NULL; if (list == NULL) { return NULL; } q_tmp = (TLinkList *)list; LinkListNode *current = NULL; LinkListNode *ret = NULL; if (pos < 0 || pos >= q_tmp->length) { return NULL; } current = &q_tmp->header; for (i = 0; i < pos && (current->next != NULL); i++) { current = current->next; } ret = current->next; current->next = ret->next; q_tmp->length--; return ret; }
相关文章推荐
- 线性表链式存储API
- 线性表链式存储设计与实现 - API实现
- 线性表链式存储设计与实现 - API实现
- 【Data_Structure笔记2】线性表的链式存储【单链表】
- JAVA数据结构之线性表的链式存储结构——双向链表
- 线性表链式存储
- 数据结构之线性表-链式存储之单链表(一)
- 栈的链式存储 - API实现
- 线性表的链式存储
- 结构之美:线性表的链式存储结构——链表
- 线性表中顺序存储和链式存储
- leetcode_24题——Swap Nodes in Pairs(线性表的链式存储)
- 线性表链式存储的实现
- 线性结构的顺序存储和链式存储的实现代码(一)
- 线性表的链式存储
- 线性表的链式存储实现c语言
- 链式存储线性表(无头节点)
- 数据结构学习笔记二 线性表的链式存储结构1
- 02线性表链式存储_LinkList--(线性表)
- 线性表的链式存储——链表(带源码)