数据结构之链表(C实现)
来源:互联网 发布:中国好声音网络歌手 编辑:程序博客网 时间:2024/04/19 08:26
- 前言
最近在复习数据结构的相关知识,感觉在初学的时候还是有很多东西没有掌握,不过现在终于算是搞得比较有头绪了,所以就在写出来和大家一起分享!
- 什么是链表
简单的说,链表就是由多个结点离散分配,彼此通过指针相连,每个结点只有一个前驱结点和后继结点。首节点无前驱结点,为结点无后继结点的一种存储结构。
- 链表的结构
头结点:链表的第一个有效结点前面的结点,头结点并不存放有效数据,也就是数据域为空,加头结点的主要目的是为了方便链表的操作。
首节点:链表的第一个有效结点,结点包含数据域和指针域。
尾结点:尾结点的指针域为空。
头指针:指向头结点的指针变量,它存放了头结点的地址(在这里注意一下,指针变量存放的是地址,也就是说头指针存放的是头结点的地址,一般通过头指针对链表进行操作)。
- 具体实现
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
//定义链表节点
typedef struct Node
{
}NODE, * PNODE;
//函数声明
PNODE createLinkList(void);
void traverseLinkList(PNODE pHead);
bool isEmpty(PNODE pHead);
int getLength(PNODE pHead);
bool insertElement(PNODE pHead, int pos, int val);
bool deleteElement(PNODE pHead, int pos, int * pVal);
void sort(PNODE pHead);
int main(void)
{
}
PNODE createLinkList(void)
{
}
void traverseLinkList(PNODE pHead)
{
}
bool isEmpty(PNODE pHead)
{
}
int getLength(PNODE pHead)
{
}
void sort(PNODE pHead)
{
}
bool insertElement(PNODE pHead, int pos, int val)
{
}
bool deleteElement(PNODE pHead, int pos, int * pVal)
{
}
- 结尾语
上面实现的主要是单链表,另外还有双链表、循环链表、非循环链表等其他几种常见链表。双链表的特殊性表现在每个基本结点有两个指针域;循环链表的特性主要表现在,在循环链表中,通过任何一个结点可以找到其他所有结点。
- 数据结构之链表(C实现)
- 数据结构之链表(C实现)
- 数据结构之---c语言实现双向链表操作
- 数据结构之双向链表(C语言实现)
- 数据结构之单向链表的实现【C++】
- 数据结构C语言实现之链栈
- 数据结构C语言实现之链队列
- 数据结构C语言实现之顺序表
- 简单数据结构之顺序表(C实现)
- 简单数据结构之链式表(C实现)
- C - 数据结构之链表
- 数据结构之队列(C实现)
- 数据结构之栈(C实现)
- 数据结构之链表(C/C++)
- 数据结构之链表实现
- C语言实现数据结构的链表
- 数据结构---队列链表c实现
- [数据结构]C语言链表实现
- 30天软件开发:告别瀑布拥抱敏捷
- Hibernate的体系结构
- 在standalone-cluster模式上运行spark应用程序(用sbt打包)
- trac 报错:Cannot load Python bindings for MySQL
- json数组对象和对象数组
- 数据结构之链表(C实现)
- 条件注释判断浏览器<!--[if !IE]><!--[if IE]><!--[if lt IE 6]><!--[if gte IE 6]>
- luabind和c++相互调用
- IOS开发之所有类型的UIKeyboardType图片展示
- DSP C语言优化-(二)
- 使用迭代器遍历图像
- VC6.0各个小模块代码整理集合
- jQuery解读之after
- 创建对象和使用方法以及属性