创建
node *head,*p,*s;
int x,cycle=1;
head=new node; //建立头节点
p=head;
while(cycle)
{
scanf("%d",&x);
if(x!=0)
{
s=new node;;//每次新建一个节点
s->data=x;
p->next=s;
p=s;
}
else
{
cycle=0;
}
}
p->next=NULL;
删除
student *t,*q,*u ;
q = head->next;
if(q->data==2)//如果目标是头的话
{
head ->next= q->next;
}
else
{
while(q)
{
u = q;
q = q->next;
if(q->data == 2)
{
u->next = u->next->next;
break;
}
}
}
头结点删除的两种方法
1. head = head->next;
2. head->next = head->next->next;
插入
头插
student *t,*q,*u ;
q = head->next;
if(q->data==2)
{
student *r = new student;
r->data = 5;
r->next = head->next;
head->next = r;
}
else
{
while(q)
{
u = q;
q = q->next;
if(q->data == 2)
{
student *r = new student;
r->data = 5;
r->next = q;
u->next = r;
break;
}
}
}
尾插
student *t,*q,*u ;
q = head->next;
while(q)
{
if(q->data == 2)
{
student *r = new student;
r->data = 5;
r->next = q->next;
q->next = r;
break;
}
q = q->next;
}
链表的逆置(改变指针的指向 a->b->c a<-b<-c)
student *t,*q,*w,*p1,*p2,*p3;
//head = NULL;
p1 = head->next;
p2 = p1->next;
while(p2)
{
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
head->next->next= NULL;
t = p1;