实现常见的链表操作,插入头部,尾部,某数据之后或之前,修改,删除,排序,存储到文件,从文件构建链表,判空,是否存在,清空,排序。
重载运算符: 下标,+(求和),-(求差),<<(输出插入符),>>(输入插入符)
#include<iostream>
#include<stdlib.h>
#include<fstream>
using namespace std;
//---------------------------------------------------------------------------------
class Node
{
public:
char data;
Node * next;
};
//----------------------
class Link
{
public:
Node * Searchpoint;
Node * Searchpointlast;
//
friend void menu(Link A);
friend void menu2(Link A);
//
friend istream & operator>>( istream& putin,Link &c);
friend ostream & operator<<( ostream& output,const Link &c);
//
void Fileout();
void createSort();
void HeadSort();
void TailSort();
void print();
void Scarch(char a);
Node * Searchit(char a);
Node * Searchlast(char a);
void insert(Node *p);
void deleteit(Node *p,Node *q);
void * BubbleSort();
void FileIn();
private:
Node * head;
Node * tail;
int length;
};
//-----------------------------------------------------------------------------------
//------------------------------------------------------------------------函数重载
istream & operator>>( istream& putin,Link &c)
{
for(int i=0;i<c.length;i++)
c.tail=c.tail->next;
int n;
cout<<"输入你要继续输入的字符数目:";
cin>>n;
Node *p;
char elem;
for(int j=0;j<n;j++)
{
p=new Node;
putin>>elem;
p->data=elem;
p->next=NULL;
c.tail->next=p;
c.length++;
c.tail=p;
}
return putin;
}
ostream & operator<<( ostream& output,const Link &c)
{
Node *p;
p=c.head->next;
for(int i=0;i<c.length;i++)
{
output<<p->data<<" ";
p=p->next;
}
cout<<endl;
return output;
}
//-------------------------