通过定义一个C++类封装单链表这种数据结构,
封装的方法有:
1.通过输入创建单链表;
2.获取单链表的数据元素个数;
3.打印输出单链表中各个元素;
4.搜索某个元素在单链表中的位置;
5.在某个位置之后插入一个结点;
6.在某个位置删除一个节点;
7.单链表逆置;
8.单链表是否存在回环的判定;
9.单链表的升序排序;
10.两个单链表的升序合并;
11.两个单链表的降序合并。
注:单链表的排序采用的是快速排序的方法。
下面是C++写的程序代码,附运行截图。
#include <iostream>
#include <malloc.h>
#include <math.h>
using namespace std;
typedef struct node //结点类型
{
int data;//数据域
node* next;//指针域
}node;
class LinkList//单链表类的定义
{
public:
LinkList(int N=0)//但参数构造函数,生成含N个元素的链表(不包括头结点)
{
CreateList(N);
len=GetLength();
}
node* head;//头结点指针
int len;//元素个数
public:
void CreateList(int n);//根据输入创建单链表
int GetLength();//获取单链表的长度(元素个数)
void PrintList();//打印单链表的各个元素
int SearchNode(int data);//查找某个元素在单链表中的位置,不过不存在,返回0。
bool InsertNode(int pos,int data);//在pos位置后插入值为data的节点
bool DeleteNode(int pos);//删除pos位置后的第一个元素,删除成功返回true.
void Reverse();//将单链表逆置
bool IsLoop();//判断单链表中是否存在会换,存在返回真,不存在返回false
void SelfASOrder();//将链表中元素升序排列
void ASCMerge(LinkList& L);//与另一个链表升序合并
void DESCMerge(LinkList& L);//与L链表降序合并
private:
void QuikSort(node* start,node* en