C++线性表链式存储结构【单链表的基本操作】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
using namespace std;
template
struct Node
{
T data;
Node
};
template
class LinkList
{
Node
public:
LinkList();
LinkList(T a[], int n);
~LinkList();
int ListLength();
T Get(int pos);
int Locate(T item);
void PrintLinkList();
void Insert(int i, T item);
T Delete(int i);
void Invert();
void Merge(LinkList
};
template
LinkList
{
head=new Node
head->next=NULL;
}
template
LinkList
{
Node
head=new Node
r=head;
for(int i=0; i
s=new Node
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
template
int LinkList
{
Node
int num = 0;
p = head -> next;
while(p)
{
p = p-> next;
num++;
}
return num;
}
template
T LinkList
{
Node
p = head -> next;
int j=1;
while(p && j
p=p->next;
j++;
}
if(!p) {cerr<<"查找位置非法";exit(1);}
else return p->data;
}
template
int LinkList
{
Node
p=head->next;
int j=1;
while(p && p->data!=item)
{
p=p->next;
j++;
}
if(p) return j;
else return 0;
}
template
void LinkList
{
Node
p=head->next;
while(p)
{
cout<
}
}
template
void LinkList
{
Node
p=head;
int j=0;
while(p && j < i-1)
{
p=p -> next;
j++;
}
if(!p) {cerr<<"插入位置非法"; exit(1);}
else {
s=new Node
s->data=item;
s->next=p->next;
p->next=s;
}
}
template
T LinkList
{
Node
T x;
p=head;
int j=0;
while(p && j
p=p->next;
j++;
}
if(!p || !p->next) {cerr<<"删除位置非法";exit(1);}
else
{
q=p->next;
x=q->data;
p->next=q->next;
delete q;
return x;
}
}
template
LinkList
{
Node
p=head;
while(p)
{
q=p;
p=p->next;
delete q;
}
head=NULL;
}
template
void LinkList
{
Node
p=head->next;
head->next=NULL;
while(p!=NULL)
{
q=p;
p=p->next;
q->next=head->next;
head->next=q;
}
}
template
void LinkList
{
Node
p1=L1.head->next;
p2=L2.head->next;
p3=L1.head;
while((p1!=NULL)&&(p2!=NULL))
{
if((p1->data)<(p2->data))
{
p3->next=p1;
p1=p1->next;
p3=p3->next;
}
else
{
p3->next=p2;
p2=p2->next;
p3=p3->next;
}
}
if(p1!=NULL) p3->next=p1;
if(p2!=NULL) p3->next=p2;
delete L2.head;
L2.head=NULL;
}
int main()
{
int a[] = {1,3,5,7,9,12,17,23,27,29};
int b[] = {2,4,6,8,15,12,13,18,21,22};
LinkList
cout<<"单链表元素是:"<
cout<<"单链表的长度是:"<
cout<<"单链表的第二个元素是:"<
cout<<"单链表的元素为3是第"<
cout<<"在第4个位置插入值为6:"<
cout<<"单链表的元素现在是:"<
cout<<"删除顺序表的第4个元素:"<
cout<<"单链表的元素现在是:"<
c.Invert();
cout<<"逆置后的元素是:"<
LinkList
d.PrintLinkList();
c.Merge(c,d);
cout<<"合并后的元素是:"<
return 0;
return 0;
}