C语言实现单链表
2016-06-05 10:13
423 查看
链表结构:
SList.h
[code=cpp;toolbar:false">#pragma once
typedef int DataType;
typedef struct SListNode
{
DataType data;
struct SListNode* next;
}SListNode;
// 如果要修改链表就必须加引用
SListNode* _BuyNode(DataType x); //建立节点
void PrintSlist(SListNode* pHead); //打印单链表
void PushBack(SListNode* & pHead, DataType x); //尾插 (这里用了引用,指明是list的别名,调用时传参,不用传地址)(引用在.c文件中不可用)
//void PushBack(SListNode** pHead, DataType x); // 这里的第一个参数指向链表第一个节点的指针的地址(调用时传参,传的是地址)
void PopBack(SListNode* & pHead); //尾删
void PushFront(SListNode* & pHead, DataType x); //头插
void PopFront(SListNode* & pHead); //头删
void DestoryList(SListNode*& pHead); //清空整个链表
int GetSize(SListNode* pHead); //获取链表长度
SListNode* Find(SListNode* pHead, DataType x); //查找
void Insert(SListNode* pos, DataType x); //某位置后插入数据
void Erase(SListNode*& pHead, SListNode* pos); //删除某位置的数据
void DelNonTailNode(SListNode* pos); //删除一个无头单链表的非尾节点
void InsertFrontNode(SListNode* pos, DataType x); // 在无头单链表的一个非头节点前插入一个节点
SListNode* FindMidNode(SListNode* pHead); //查找中间节点
SListNode* FindKNode(SListNode* pHead, int k); //查找倒数第k个节点(要求只能遍历一次)
void PrintTailToHead(SListNode* pHead); //倒着打印单链表(递归)
//SListNode* Reverse_(SListNode* pHead); //逆置单链表(需要接收返回值),原链表会面目全非
void Reverse(SListNode*& pHead); // 将原链表逆置
SListNode* Merge(SListNode* pHead1, SListNode* pHead2); //合并两个有序链表(合并后依然有序)(递归)
void Sort(SListNode* pHead); //冒泡排序
SList.h
[code=cpp;toolbar:false">#pragma once
typedef int DataType;
typedef struct SListNode
{
DataType data;
struct SListNode* next;
}SListNode;
// 如果要修改链表就必须加引用
SListNode* _BuyNode(DataType x); //建立节点
void PrintSlist(SListNode* pHead); //打印单链表
void PushBack(SListNode* & pHead, DataType x); //尾插 (这里用了引用,指明是list的别名,调用时传参,不用传地址)(引用在.c文件中不可用)
//void PushBack(SListNode** pHead, DataType x); // 这里的第一个参数指向链表第一个节点的指针的地址(调用时传参,传的是地址)
void PopBack(SListNode* & pHead); //尾删
void PushFront(SListNode* & pHead, DataType x); //头插
void PopFront(SListNode* & pHead); //头删
void DestoryList(SListNode*& pHead); //清空整个链表
int GetSize(SListNode* pHead); //获取链表长度
SListNode* Find(SListNode* pHead, DataType x); //查找
void Insert(SListNode* pos, DataType x); //某位置后插入数据
void Erase(SListNode*& pHead, SListNode* pos); //删除某位置的数据
void DelNonTailNode(SListNode* pos); //删除一个无头单链表的非尾节点
void InsertFrontNode(SListNode* pos, DataType x); // 在无头单链表的一个非头节点前插入一个节点
SListNode* FindMidNode(SListNode* pHead); //查找中间节点
SListNode* FindKNode(SListNode* pHead, int k); //查找倒数第k个节点(要求只能遍历一次)
void PrintTailToHead(SListNode* pHead); //倒着打印单链表(递归)
//SListNode* Reverse_(SListNode* pHead); //逆置单链表(需要接收返回值),原链表会面目全非
void Reverse(SListNode*& pHead); // 将原链表逆置
SListNode* Merge(SListNode* pHead1, SListNode* pHead2); //合并两个有序链表(合并后依然有序)(递归)
void Sort(SListNode* pHead); //冒泡排序
相关文章推荐
- C++实现双向链表
- C++实现单链表
- C++实现动态顺序表
- C++实现 复数类
- C++实现日期类
- C++ Assert()断言机制原理以及使用
- C和C++语言中基本的数据类型
- C语言 实现一个函数,判断一个数是不是素数
- C语言 实现一个函数判断year是不是润年
- C语言 使用函数实现两个数的交换
- C语言输出数组的三种方法
- C语言 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?打印出来?
- C语言 模拟三次密码输入
- C语言 整人程序“我是猪”
- vs的一个调试的程序
- POJ2446 Chessboard(二分图)
- MFC如何清理和删除一些消息映射函数
- C++第7次实验-数组素数排序
- c++标准库—命名空间std和头文件的演变 (各个头文件作用解析解释,惊喜!!!)
- c++学习笔记(小技巧)