参考用书《数据结构》(秦锋,汤亚玲主编)
贴下代码:
#include <iostream>
#include <string>
using namespace std;
class Node{
public:
string data;
Node * next;
Node()
{
next = NULL;
}
};
class Link{
public :
Node *head;//头指针
Link()//构造函数
{
head = NULL;
}
~Link(){
//析构函数
DeleteAll();
}
void Initiate(); //初始化
void DeleteAll(); //删除所有节点
void HeadCreate(int n);//头插法建表
void TrailCreate(int n);//尾插法建表
void HeadCreateWithHead(int n);//建立带表头的链表(从头)
void TrailCreateWithTrail(int n);//建立带表头的链表(从尾)
int Length(); //链表长度
Node *Locatex(string data); //查找值为x的数据元素
Node *Locatei(int i ); //取第i个元素值
bool Insert(string data, int i);//在链表第i个元素之前插入x
bool Deleted(int i); //删除链表中第i个结点
void Print(); //打印链表
string Get(int i); //读取第i个位置上的元素值
void reverse(Link &H); //单链表的倒置
void merge(Link &A,Link &B,Link &C)
{
Node *p, *q, *s;
p=A.head->next; q=B.head->next; //p、q分别指向两个链表的第一个元素
C.head->next=NULL;//初始化
while((p!=NULL)&&(q!=NULL))
{
if(p->data<=q->data)
{
s=p;