输入三个数:1、2、3,然后把2删除了并且输出删除后的链表,然后添加一个数10,并且输出添加后的链表
其中需要注意!!!
刚刚发现的,head=new node;这样的话不能把head->next为NULL,而当head=new node();时,head->next就为NULL了
程序代码:
#include<stdio.h>
struct data{
int note;
data *next;
};
int main()
{
int i;
data *p,*head,*q,*r;
p=new data;//申请一个空间
q=new data;
head=new data;
head->next=NULL;
p=head;
for(i=0;i<3;i++)
{
r=new data;//每用一次都要申请一次空间
scanf("%d",&r->note);
p->next=r;
p=p->next;
}
p->next=NULL;
p=head;
while(p!=NULL)//删除操作
{
if(p->next->note==2)
{
q=p;
q->next=q->next->next;
break;
}
p=p->next;
}
p=head->next;
while(p!=NULL)
{
printf("%d\n",p->note);
p=p->next;
}
printf("\n");
r=new data;
r->note=10;
r->next=NULL;
p=head;
while(p!=NULL)//添加操作
{
if(p->note==1)
{
r->next=p->next;
p->next=r;
break;
}
p=p->next;
}
p=head->next;
while(p!=NULL)
{
printf("%d\n",p->note);
p=p->next;
}
return 0;
}
单链表的删除:
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
struct node{
int data;
struct node *next;
};
int main()
{
node *q,*p,*head;
int n,i;
head=new node;//也可以head=(node*)malloc(sizeof(node));
head->next=NULL;//建立有头单链表
scanf("%d",&n);
q=new node;
q=head;
for(i=0;i<n;i++)
{
p=new node;
scanf("%d",&p->data);
p->next=NULL;
q->next=p;
q=p;
}
p=new node;
scanf("%d",&p->data);
p->next=NULL;
q=head;
while(q!=NULL)
{
if(q->next==NULL||q->next->data>p->data)
{
p->next=q->next;
q->next=p;
break;
}
q=q->next;
}
q=head->next;
while(q!=NULL)
{
printf("%d ",q->data);
q=q->next;
}
printf("\n");
return 0;
}