单链表、循环链表的插入和删除
- 单链表的插入
- 在不带头结点的单链表中插入
-
- 在带头结点的单链表中插入
- 插入部分代码实现
- 单链表的删除
- 在不带头结点的单链表中删除
-
- 在带头结点的单链表中删除
- 删除部分代码实现
单链表的插入
在不带头结点的单链表中插入
在表首插入无前驱结点

其他位置插入有前驱结点

在带头结点的单链表中插入

插入部分代码实现
status ListInsert( LinkList &L, int i, ElemType e){
//在带头结点的单链表L中第i个位置之前插入元素e,1≤ i≤表长+1
p=L; j=0;
while( p&&j<i-1 ) {
p=p->next; j++; } //顺指针找第i-1个结点
if( !p || j>i-1 ) return ERROR; //i大于表长加1或i小于1
s=new LNode; //生成新结点
s->data=e;
s->next=p->next; //插入L中
p->next=s;
return OK;
} //ListInsert
单链表的删除
在不带头结点的单链表中删除
删除首元结点

删除其他位置元素

在带头结点的单链表中删除

删除部分代码实现
status ListDelete(LinkList &L, int i, ElemType &e) {
//在带头结点的单链表L中,删除第i个元素,并用e返回其值
p=L; j=0;
while( p->next && j<i-1 ) {
p=p->next; j++;} //顺指针找第i-1个结点
if( !(p->next) || j>i-1 ) return ERROR; //i小于1或i大于表长
q=p->next; //q指向第i个结点
p->next=q->next;
e=q->data;
free(q); //释放所删结点的空间
return OK;
} //ListDelete
还没有评论,来说两句吧...