线性表-单链表的插入操作(在指定结点后/前)
#include <stdio.h>
#include <stdlib.h>
//带头结点
typedef struct Lnode{
ElemType data;
struct Lnode *next;
}Lnode,*LinkList;//定义一个单链表结构
//封装函数,在p结点后插入
bool InsertNextNode(Lnode *p,elemtype e)
{
if(pNULL)
return false;
Lnode *s=(Lnode *)malloc(sizeof(Lnode));
if(sNULL)//空间不足
return false;
s->data=e;
s->next=p->next;
p->next=s;
}
//前插操作
bool InsertPriorNode(Lnode p,elemtype e)
{
if(pNULL)
return false;
Lnode *s=(Lnode *)malloc(sizeof(Lnode));
if(sNULL)//空间不足
return false;
s->next=p->next;
p->next=s;//新节点连接到p之后
s->data=p->data;//将P的数据复制给s
p->data=e;//将新数据放入p
//交换数据域部分可改写**斜体样式
elemtype temp=p->data;
p->data=s->data;
s->data=temp;***
//删除部分与粗体可代换
}
//插入之前的判断
bool insert(LinkList &L,int i,ElemType e)
{
if(i<1)//位序小于1,说明输入不合法
return false;
Lnode *p;//定义一个指针用于指向第i-1个元素
int j=0;//用于记录i-1的位置
p=L;//L指向头结点,头结点是第0个结点,不存储数据
while(p!=NULL&&j<i-1){//用于寻找第i-1个位置
p=p->next;
j++;
}
return InsertNextNode(p,e);//对于子函数的调用
}
2816

被折叠的 条评论
为什么被折叠?



