#include <iostream>
#include <stdio.h>
using namespace std;
typedef struct LinkList
{
int data;
LinkList* p_next;
};
void NodeToBeDeleted(LinkList *root ,LinkList *ToBeDeleted);
void ReadList(LinkList *root);
void LinkTest()
{
LinkList *list1;
list1=new LinkList;
list1->data=1;
LinkList *list2;
list2=new LinkList;
list2->data=2;
LinkList *list3;
list3=new LinkList;
list3->data=3;
LinkList *list4;
list4=new LinkList;
list4->data=4;
LinkList *list5;
list5=new LinkList;
list5->data=5;
LinkList *list6;
list6=new LinkList;
list6->data=6;
list1->p_next=list2;
list2->p_next=list3;
list3->p_next=list4;
list4->p_next=list5;
list5->p_next=list6;
list6->p_next=NULL;
NodeToBeDeleted(list1,list6);
ReadList(list1);
}
void NodeToBeDeleted(LinkList *root ,LinkList *ToBeDeleted)
{
LinkList *temp;
if(ToBeDeleted->p_next!=NULL)
{
temp=ToBeDeleted->p_next;
ToBeDeleted->data=temp->data;
ToBeDeleted->p_next=temp->p_next;
delete temp;
}
else
{
temp=root;
while(temp->p_next!=ToBeDeleted)
temp=temp->p_next;
temp->p_next=NULL;
delete ToBeDeleted;
}
}
void ReadList(LinkList *root)
{
LinkList *p=root;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->p_next;
}
cout<<endl;
}
节点要new
删除是将它的下一个的值赋给它然后将ToBeDeleted的next指针跳过下一个
尾节点则要按一般方法删除