导航:首页 > 源码编译 > 删除算法原理

删除算法原理

发布时间:2023-08-04 03:42:47

❶ 顺序表、单链表的删除算法

单链表的删除操作是指删除第i个结点,返回被删除结点的值。删除操作也需要从头引用开始遍历单链表,直到找到第i个位置的结点。如果i为1,则要删除第一个结点,则需要把该结点的直接后继结点的地址赋给头引用。对于其它结点,由于要删除结点,所以在遍历过程中需要保存被遍历到的结点的直接前驱,找到第i个结点后,把该结点的直接后继作为该结点的直接前驱的直接后继。删除操作如图

单链表的删除操作示意图

删除操作的算法实现如下:
public T Delete(int i)
{
if (IsEmpty()|| i < 0)
{
Console.WriteLine("Link is empty or Position is error!");
return default(T);
}
Node q = new Node();
if (i == 1)
{
q = head;
head = head.Next;
return q.Data;
}
Node p = head;
int j = 1;
while (p.Next != null&& j < i)
{
++j;
q = p;
p = p.Next;
}
if (j == i)
{
q.Next = p.Next;
return p.Data;
}
else
{
Console.WriteLine("The ith node is not exist!");
return default(T);
}
}
算法的时间复杂度分析:单链表上的删除操作与插入操作一样,时间主要消耗在结点的遍历上。如果表为空则不进行遍历。当表非空时,删除第i个位置的结点, i等于1遍历的结点数最少(1个),i等于n遍历的结点数最多(n个,n为单链表的长度),平均遍历的结点数为n/2。所以,删除操作的时间复杂度为O(n)。

阅读全文

与删除算法原理相关的资料

热点内容
如何判断单片机晶振好坏 浏览:942
程序员那么可爱电视剧免费不卡 浏览:20
单片机马达程序 浏览:595
我的世界怎么用指令做一个服务器 浏览:539
安卓手机截屏图片是哪个文件夹 浏览:365
穿越到大学前前世是普通程序员 浏览:115
电脑如何连接学校服务器地址 浏览:937
乘11的简便算法 浏览:45
数据库工程师pdf 浏览:139
程序员围观图 浏览:424
如何升安卓110系统 浏览:594
python求文本的平均列数 浏览:311
乌鸦喝水app怎么做 浏览:801
贝尔编程好吧6图4 浏览:913
admobsdkandroid 浏览:210
云电脑架设服务器 浏览:858
android淘宝第三方登录接口开发 浏览:539
国内低价云服务器申请注册 浏览:930
电脑能直接解压文件吗 浏览:44
word转pdf超链接 浏览:600