单链表元素的删除(伪代码)

1、问题描述
  问题:在带头结点的单链表L中,删除第i的元素,并由e返回其值。
    请写出该算法的伪代码。

2、算法讲解
  算法原理:遍历表中结点,找到要删除结点的前一个结点,进行删除操作。

  删除结点操作
单链表元素的删除(伪代码)_第1张图片
3、伪代码
  执行流程
   ——》开始;
   ——》定义代替头指针L移动的指针p,计数因子j,并赋初值0;
   ——》用while循环查找删除结点的前一个结点;
   ——》判断删除位置是否合理;
   ——》进行删除操作;
   ——》获取删除结点值,并释放其存储空间;
   ——》结束;

  算法伪代码

Status ListDelete(LinkList &L,int i,ElemType &e)
{ //在带头结点的单链表L中,删除第i个元素,并返回其值; 
	p=L;j=0;            //创建新指针p,代替头指针L遍历链表;定义计数因子j; 
	while((p->next)&&j<i-1)    //寻找第i-1个结点; 
	{
		p=p->next;
		j++;
	}
	if(!(p->next)||j>i-1) return ERROR;   //删除元素位置不合理; 
	q=p->next;                //指向结点i的指针; 
	p->next=q->next;          //删除操作; 
	e=q->data;                //获得结点i的值; 
	free(q);                  //释放结点q的存储空间; 
	return OK;
}   //ListDelete; 

至此,整个删除结点的操作就完成了!!!

  结语:以上就是我对这个问题的理解、解法,可能存在着更好、更简洁的解法代码,希望大家提出来,我们一起讨论,交换看法,共同进步。若上述代码中存在问题,望大家指正,谢谢大家看到结尾。(∩^∩)

奋斗的2351

你可能感兴趣的:(数据结构考研复习笔记)