8-线程表的链式存储结构

链式存储结构

在C语言中可以用结构体来定义链表中的指针域

链表中的表头节点也可以用结构体实现

//1.结点指针定义

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

//2.头结点定义
typedef struct _tag_LinkList
{
    LinkListNode header;
    int length;
} TLinkList;

//3.数据元素定义示例
struct Value
{
    LinkListNode header;
    int v;
};

 链表的接口函数:

LinkList.h
/*********************************************************************/

#ifndef _LINKLIST_H_
#define _LINKLIST_H_

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

LinkList* LinkList_Create();            //创建

void LinkList_Destroy(LinkList* list);  //销毁

void LinkList_Clear(LinkList* list);    //清除

int LinkList_Length(LinkList* list);    //长度

int LinkList_Insert(LinkList* list, LinkListNode* node, int pos); //增加

LinkListNode* LinkList_Get(LinkList* list, int pos);   //查询

LinkListNode* LinkList_Delete(LinkList* list, int pos);  //删除

#endif

接口的实现

#include <stdio.h>
#include <malloc.h>
#include "LinkList.h"

typedef struct _tag_LinkList     //0.头结点的创建
{
    LinkListNode header;
    int length;
} TLinkList;

//1.链表的创建
LinkList* LinkList_Create() // O(1)         (typedef void LinkList;)
{
    TLinkList* ret = (TLinkList*)malloc(sizeof(TLinkList)); //1.创建头结点
    
    if( ret != NULL )            //2.初始化
    {
        ret->length = 0;
        ret->header.next = NULL;
    }
    
    return ret;  
}



void LinkList_Destroy(LinkList* list) // O(1)   
{
    free(list)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值