接着链表来说下对链表的插入和删除的操作
在链表头部插入新节点:这个比较简单的,就是让你的新节点指向你的头节点就可以完成这个操作啦。
void InsertHead(node*&head)
{
node*s = NULL;
s = new node;
int a;
cin >> a;
s->data = a;
s->next = head;
head = s;
}
链表尾部插入新节点:要在尾部插入一个节点呢,首先要先找到最后一个节点,然后就弄个新节点,让尾节点指向这个新节点就可以啦
void InsertTail(node *head)
{
node*s = new node;
node*p = head;
while (p->next != NULL)//这个循环找最后一个节点
{
p = p->next;
}
int a;
cin >> a;
s->data = a;
p->next = s;
}
某个节点p的前面插入新节点:要把你所需要p节点和p的上一个节点找到,然后你就让p的上一个节点指向你的新节点,你的新节点就指向你的p节点机可以啦。
void InsertBefore(node*head, node*p)
{
int a;
cin >> a;
node *q;
q = head;
node *q1 = new node;
q1->data = a;
while (q->next != p)
{
q = q->next;
}
q1->next = p;
q->next = q1;
}
删除头节点:这个比较简单,让你的头节点的下一个节点赋值为头节点,然后把头节点delete就可以啦。
void DelHead(node*&head)
{
node* p;
p = head;
head = head->next;
delete p;
}
删除某个节点p:这个的话,如果会在p的前面插入新节点,那么删除应该也是会的啦,也就是让p的上个节点指向p的下一个节点,然后把p这个节点删除掉就可以啦。
void DelNode(node* head, node* p)
{
node* q=head;
//node* q1;
while (q->next!=p)
{
q = q->next;
}
q->next = p->next;
delete p;
}
以上的内容没有没有创建链表和链表的显示,不过可以参照一下“链表”这篇文章,直接调用以上的方法就可以了啦。效果图就不显示了,自己试试就可以啦。