链表的链性表的c语言实现方式 linklist.h 和 linklist.c

linklist.h 文件

#ifndef _LINKLIST_H_
#define _LINKLIST_H_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//链表就是一个一个的表通过关系节点连接的
//单向链表
//链表操作精髓在于操作关系节点,引入辅助指针pcurrent,pnext.从表头开始遍历各关系节点。

//让业务节点包含关系节点,并把关系节点放在业务的首地址
//业务的首地址就是关系节点的地址,统一转化

//让无序的数据通过指针组成链表,联系起来
//1,指针指向谁就把谁的地址赋给指针
//2,分清楚链表的操作逻辑和辅助指针变量之间的关系
//3, 链表是链式存储的,无顺序,单向的,找到3必须先找到2,
//找到2必须先找到1,找到1必先找到0,再找到头,故引入辅助指针,不可以[]操作

//实现上层调用和底层分离,不让调用用户知道数据结构
typedef void List;
typedef void ListNode;

#ifndef bool
#define bool int
#define true 1
#define false 0
#endif
//链表就是有很多表格组成,刚开始创建表头格,
//业务节点创建后来的表格,通过关系节点连接起来
/**链表只创建了一个链表头,next指向null。后边添加的节点是在业务节点中产生的。**/

//小节点,等待被业务节点包含。
//由小节点之间的关系连接业务节点。
//被业务节点放在首部,小节点地址与业务节点首地址重合
//链表的算法和业务分离,STL思想

//定义小节点是有联系的 ,小节点的链表
typedef struct _tag_LinkListConnectedNode
{
    struct _tag_LinkListConnectedNode* next;
}LinkListConnectedNode;

//定义链表头,只是链表的头,首地址。通过首地址操作链表
typedef struct _tag_LinkList{
    LinkListConnectedNode head;  //小节点
    int length; //小节点的个数就相当于业务节点的个数
}LinkList;

//用户定义的数据业务模型只要包含关系节点,且关系的节点的地址与表头的关系节点地址相当
//都是每个表格的首地址即可,业务节点就可以与表头串起来
//typedef struct _tag_LinkListData
//{
   
//  LinkListConnectedNode node;   //关系节点
//  Teacher teacher;     //业务数据
//}LinkListData;

//只是返回链表的首地址,通过链表的首地址完成一系列操作
List* LinkList_Create();
bool LinkList_Destory(List* list);
bool LinkList_Clear(List* list);
int LinkList_GetLength(List* list);
bool LinkList_InsertOneNode(List* list ,ListNode* listnode, int pos);
ListNode* LinkList_GetOneNode(List* list, int pos );
ListNode* LinkList_DeleteOneNode(List* list, int pos);
bool LinkList_DeleteAllNode(List* list);
#endif

linklist.c 文件

#include "linklist.h"
#include <stdio.h
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值