链表类的声明
#include "iostream"
#include "string"
using namespace std;
class List
{
List *head;
List *next;
List *p;
List *p2;
List *p3;
string name;
public:
List()
{
name="“吴香玉”";
}
List* build();
List* rebuild(List *HEAD);
void show(List *HEAD);
void insert(List *HEAD);
};
建立单向链表
List* List::build()//建立单向链表,我知道你懂的
{
head=this;
p=head;
int i=0;
while(p->name!="0")
{
p2=new List;
p2->name=sentence[i];
p->next=p2;
p=p2;
i++;
}
return head;
}
倒序排列链表
List* List::rebuild(List *HEAD)//倒序排列链表
{
p2=HEAD;//p2指向头指针
p=p2->next;//p为p2的下一位
while(p->name!="0")
{
p3=p->next;//p3保存p的下一节点地址
p->next=p2;//将p的next指向p2(p的前一节点)
p2=p;//p2移向p(p2的下一节点)
p=p3;//p移向p3(p的下一节点)
}
HEAD->next=new List;//给HEAD下一节点创建一个新的对象(此时HEAD已经成新链表的末尾)
(HEAD->next)->name="0";//HEAD下一节点的name赋值0表示HEAD为链表末尾
return p2;
}
void List::insert(List *HEAD)//在链表中插入一个元素
{
p=HEAD;
while(p->name!="0")
{
if(p->name=="赵")
{
p2=p->next;//保存p 原本 的下一个节点地址
p->next= new List;//在p的下一个节点创建一个新的对象
(p->next)->name="(误)";//p的 新的 下一节点的name赋值
(p->next)->next=p2;// p的 新的 下一节点的next接上 p 原本 的下一个节点地址
}
p=p->next;
}
}
输出链表
void List::show(List *HEAD)//输出链表
{
p=HEAD;
while(p->name!="0")
{
cout<<p->name;
p=p->next;
}
cout<<endl;
}
以上就是单向链表的基本操作,写得不好,多多指教