线性表的链式存储结构-删除指定位置的元素
//通过索引删除元素
public T DeleteByIndex(int index)
{
    Node go = this.GetNodeByIndex(index - 1);

    if (go == null || go.next == null)
    {
        Console.WriteLine("索引非法!");
        return default(T);
    }

    Node p = go.next;
    T old = p.data;
    go.next = p.next;
    p = null;

    if (index == this._curentLinkLength)
    {
        //说明删除的是最后一个元素
        this._last = go;
    }
    this._curentLinkLength--;
    return old;
}

线性表的链式存储结构


同样的,删除指定位置的元素也是需要获取到这个位置的前一个元素的,同时还要获取到后一个元素,可以通过前一个元素的next的next获取到,然后直接修改前一个元素的next为后一个元素,那么这个要删除的位置的元素的引用就没有了,也就是凭空消失了。

如果有尾结点引用,需要注意的是删除最后一个结点的情况,需要修改尾结点的引用为前一个元素。


首页 我的博客
粤ICP备17103704号