本程序实现的单链表是带头结点的单链表,头结点相当于一个全局变量。
本程序利用了C++的模板功能。
1、指定位序插入
2、清空线性表
3、查询元素
4、指定位序删除
5、遍历
6、指定位序元素获取
7、线性表长度获取
LinkList.h
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;
//模板
template<typename DataType>
struct LinkNode
{
DataType data;
struct LinkNode* next;
};
//线性表的头结点定义,不同于一般的数据节点,相当于是一个全局变量
template<typename DataType>
struct LinkList
{
LinkNode<DataType>* head; //L是头结点,head是头指针?
int length;
};
//线性表的初始化操作
template<typename DataType>
void InitList(LinkList<DataType> &L)
{
L.length = 0;
L.head = NULL;
}
//线性表指定位序插入
template<typename DataType>
Status ListInsert(LinkList<DataType> &L,int i,DataType e)
{
//合法性检验
if (i > L.length + 1 || i < 0)
return FALSE;
//申请一个结点,并进行初始化设置
LinkNode<DataType>* p = new LinkNode<DataType>;
//内存分配失败
if (!p) return FALSE;
//初始化新结点
p->next = NULL;
p->data = e;
if (i == 1) //1位置进行特殊处理,即插入头结点之后
{
p->next = L.head; //p指向首结点
L.head