文章目录
0、链表的实现
class List {
public:
ListNode *root;
List()
{
root = new ListNode;
}
~List(){
delete root;
}
/*
Create
*函数功能:创建链表.
*输入:各节点的data
*返回值:指针head
*/
ListNode *create() //*&是指针的引用
{
ListNode *p1,*p2 = nullptr;
ListNode *head=NULL;
cout<<"输入数序(以负数或0结束): ";
int n;
cin>>n;
while(n>0)
{
p1=new ListNode;
p1->data=n;
p1->next=NULL;
if(NULL==head){
//将head, p1, p2都指向头结点
head=p1;
p2=head;
}else{
p2->next=p1;
p2=p1;
}
cin>>n;
}
root = head;
return root;
}
/*
insert
*函数功能:在链表中插入元素.
*输入:head链表头指针,p新元素插入位置,x新元素中的数据域内容
*返回值:无
*/
ListNode *insert(ListNode *head, int p, int x)
{
cout<<"在第"<<p<<"元素后插入"<<x<<endl;
ListNode *tmp=head;//for循环是为了防止插入位置超出了链表长度
for(int i=0; i<p;i++)
{
if(tmp==NULL){
return head;
}
if(i<p-1){
tmp=tmp->next;
}
}
ListNode *tmp2=new ListNode;
tmp2->data=x;
tmp2->next=tmp->next;
tmp->next=tmp2;
return head;
}
ListNode*