美文网首页
链表,单链表

链表,单链表

作者: 如果大雨落下 | 来源:发表于2017-05-22 23:55 被阅读0次

关于链表的一些知识

ifndef LINKLIST_H

define LINKLIST_H

typedef void Linklist;

typedef struct _tag_LinkListNode
{
struct _tag_LinkListNode *next;
}LinkListNode;

Linklist* LinkList_Create(); //链表的创建

void LinkList_Destory(Linklist *list); //销毁链表

void LinkList_Clear(Linklist *list); //清空链表数据

int Linklist_length(Linklist *list); //获取链表长度

void Linklist_Insert(Linklist *list,LinkListNode *node,int pos); //插入数据到链表

LinkListNode* Linklist_get(Linklist* list,int pos); //获取链表某一位置数据

LinkListNode* Linklist_Delete(Linklist *list,int pos); //删除某以数据

endif // LINKLIST_H

include "linklist.h"

include <stdlib.h>

include <stdio.h>

typedef struct _tag_LinkList
{
LinkListNode header;
int length;
}TLinkList;

Linklist* LinkList_Create() //链表的创建
{
//g分配内存
TLinkList *Tlist = (TLinkList *)malloc(sizeof(TLinkList));
if(Tlist == NULL){
return NULL;
}
Tlist->header.next = NULL;
Tlist->length = 0;
return Tlist;
}

void LinkList_Destory(Linklist *list) //销毁链表
{
if(list != NULL){
free(list);
}
}

void LinkList_Clear(Linklist *list) //清空链表数据
{
TLinkList *tlist = (TLinkList *)list;
if(tlist ==NULL)
{
return;
}
tlist->length = 0;
tlist->header.next = NULL;
}

int Linklist_length(Linklist *list) //获取链表长度
{
TLinkList *tlist = (TLinkList *)list;
if(tlist ==NULL)
{
return -1;
}
return tlist->length;
}

void Linklist_Insert(Linklist *list,LinkListNode *node,int pos) //插入数据到链表
{
TLinkList *tlist = (TLinkList *)list;
LinkListNode *current = NULL;
if(list == NULL || node == NULL || pos < 0){
return;
}

 //要找到插入的前一个
 current = &tlist->header;
 for (int i = 0; (i < pos)&&(current->next!=NULL);i++){
     current = current->next;
 }

 node->next = current->next;
 current->next = node;
 tlist->length++;
 return;

}

LinkListNode* Linklist_get(Linklist* list,int pos) //获取链表某一位置数据
{
TLinkList *tlist = (TLinkList *)list;
LinkListNode *current = NULL;
if(list == NULL || pos < 0 || pos >tlist->length){
return NULL;
}
//要找到插入的前一个
current = &tlist->header;
for (int i = 0; (i < pos)&&(current->next!=NULL);i++){
current = current->next;
}
return current->next;
}

LinkListNode* Linklist_Delete(Linklist *list,int pos) //删除某以数据
{
TLinkList *tlist = (TLinkList *)list;
LinkListNode *current = NULL;
if(list == NULL || pos < 0 || pos >tlist->length){
return NULL;
}
//要找到插入的前一个
current = &tlist->header;
for (int i = 0; (i < pos)&&(current->next!=NULL);i++){
current = current->next;
}
LinkListNode *temp = current->next;
current->next = temp->next;
tlist->length--;
return temp;
}

相关文章

  • 单向链表算法

    单向链表 反转单向链表 单链表查找倒数第k个节点 单链表递归倒序打印 单链表排序 单链表删除重复节点

  • 单链表 C++

    单链表 C++ 题目 1、创建单链表2、初始化单链表3、释放单链表4、获取单链表中元素的数量5、输出单链表中的所有...

  • 线性表:顺序表和链表

    顺序表(数组)优缺点 链表优点 单链表使用 单链表结构 单链表初始化 单链表初始化 单链表建立: 头插法 尾插法 ...

  • Algorithm小白入门 -- 单链表

    单链表递归反转链表k个一组反转链表回文链表 1. 递归反转链表 单链表节点的结构如下: 1.1 递归反转整个单链表...

  • 链表

    链表:通过“指针”将零散的内存块联系起来。常见链表结构:单链表、循环链表和双链表。 单链表 对比数组学习单链表 循...

  • 链表基本操作

    1、删除单链表节点 2、插入单链表结点 单链表具体实现

  • 25_静态单链表的实现

    关键词: 单链表的一个缺点、静态单链表设计思路、静态单链表的继承层次结构、静态单链表的实现思路、静态单链表的实现 ...

  • 单链表反转

    单链表 单链表反转 递归方法

  • 数据结构——Golang实现单链表

    转载请注明出处:数据结构——Golang实现单链表 1. 单链表 1.1. 定义 单向链表(单链表)是链表的一种,...

  • JavaScript数据结构2——单链表

    以下的代码包括了以下几部分 单链表初始化 单链表的插入 单链表的删除 单链表的创建(头插法) 单链表的创建(尾插法...

网友评论

      本文标题:链表,单链表

      本文链接:https://www.haomeiwen.com/subject/nstwxxtx.html