数据结构: 用C实现链表link
链表作为常见的一种数据结构之一,对于任何一门编程语言来说都是最为基本的。拿它来练手最为合适不过了。
连表示是什么:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。(摘自百度百科)
链表的定义:
typedef int T;//定义数据类型,方便更改
typedef struct SNode{
//节点
T data;
struct SNode * next;//下一个节点
}SNode;
typedef struct SNode * SLink;//定义链表
链表这样子就定义好了,接下来就是实现链表功能了。
SLink create_slink(){
//创建链表
SLink slink = malloc(sizeof(SNode));
slink->next = NULL;
return slink;
}
bool slink_is_empty(SLink slink){
//判断链表是否为空
if(slink->next){
return true;
}
return false;
}
size_t slink_size(SLink slink){
//链表长度
size_t cnt = 0;
int i;
SNode *snode = slink->next;
for(i = 0;snode!=NULL;i++){
++cnt;
snode = snode->next;
}
return cnt;
}
SNode *slink_get_prev_snode(SLink slink,size_t pos){
//获取该位置的前一个节点
SNode *snode = slink;
int i;
for(i = 0;snode != NULL&&i<pos;i++){
snode = snode->next