一、将元素x插入在节点p之后
1.、为x申请节点空间,生成节点s
s=new LNode;
s->data=x;
2、p表示当前节点,在p后插入元素s,修改指针
viod Insert(LinkList H,LNode *p,int x)
{
LNode *s;
s=new LNode;
s->data=x'
s->next=p->next;
p->next=s;
}
二、将元素x插入在节点p之前
1.、为x申请节点空间,生成节点s
s=new LNode;
s->data=x;
2、p表示当前节点,需要找到p的前驱pre,在pre后插入元素s,修改指针
viod Insertpre (LinkedList H,LNode *p,int x)
{
LNode *s,*pre;
//找p的前驱pre
pre=H;
while (pre->next!=NULL&&pre->next!=p)
pre=pre->next;
if(pre->next==NULL) return error;
s=(LNode*)malloc(sizeof(LNode));//创建新节点
s->data=x;
s->next=pre->next;
pre->next=s;
}
创建单链表 头插法和尾插法
1、头插法(在头节点后插,已知节点前插)
int LinkList Head()
{
LinkList L,p;
L=new LNode;
L->next=NULL;//初始化一个空链表L为头指针
scanf("%d",&x);//x是链表元素具有相同类型的变量,假设为整型
while (x!=flag) //flag为结束输入标志,可自行设置
{
p=new LNode;
p->date=x;
p->next=L->next;
L->next=p;
scanf("%d",&x);
}
return L;
}
2、尾插法
int LinkList wei()
{
LinkList L,r,p;
L=new LNode;
L->next=NULL;//初始化一个空链表L为头指针
r=L;
scanf("%d",&x);//x是链表元素具有相同类型的变量,假设为整型
while (x!=flag) //flag为结束输入标志,可自行设置
{
p=new LNode;
p->date=x;
p->next=r->next;
r->next=p;
r=p;
scanf("%d",&x);
}
return L;
}
三、单链表的删除
1、删除p的后继节点
viod LinkListDel (LinkList H,LNode *p)
{
LNode *pre;
pre=H;
while (pre->next!=NU::&&pre->next!=p)
{pre=pre->next;}
if(pre->next==NULL) return error;
pre->next=p->next;
delete(p);
}