国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

數據結構實例<三>(匹配鏈表所有元素刪除后并返回新的鏈表)入門

2019-11-08 03:22:11
字體:
來源:轉載
供稿:網友

題目:

刪除鏈表中等于給定值val的所有節點。

Example:

給出鏈表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回刪除3之后的鏈表:1->2->4->5

Function 如下:

public static void RemoveElements(LinkList<string> head, int val)        {            string value = val.ToString();            if (head.IsEmpty())            {                Console.WriteLine("LinkList is Empty!");            }            var p = new LinkListNode<string>();            var q = new LinkListNode<string>();            p = head.HeadLinkListNode;            q = head.HeadLinkListNode.Next;            int length = head.GetLength();            /********************for 循環***********************************/            for (int j = 1; j <= length; j++)            {                if (q == null)                {                    break;                }                if (q.Data.Equals(value))                {                    p.Next = q.Next;                    q = q.Next;                }                else                {                    p = p.Next;                    q = q.Next;                }            }            /**************************while 循環****************************/            while (q != null)            {                if (q.Data.Equals(value))                {                    p.Next = q.Next;                    q = q.Next;                }                else                {                    p = p.Next;                    q = q.Next;                }            }            if (head.HeadLinkListNode.Data == value)            {                head.HeadLinkListNode = head.HeadLinkListNode.Next;            }        }*兩種循環皆可。for循環走了彎路,兩者思路差不多。畢竟思想的碰撞才會得出最佳方案。

*傳入的head為null和不為空是一組判定,杜絕null引用拋異常。

*最開始我是以p為參考系依據判定匹配字符。發現到最后會丟失鏈表數據,原因是因為p作為頭指針,指向下一級元素,頭指針被替換(Remove)。

*反觀之后,我們逆向思考,以q(p.next)節點思考,下一級節點作為操作。把head留作最后處理。

*操作循環的依據是head下級節點不為null,即NEXT有值。

*循環體內就是是否匹配元素,不匹配pq相繼指向下一個元素。

*匹配之后直接跳過q,pq相繼指向q.next.q 作為參考判斷指針,必須逐級移動(檢索匹配)。p作為操作指針過濾節點。

*循環完成后,q為空,p為過濾掉的最后一個節點。此時head已經過濾完成,輸出數據即可。

p  q  作為工具指針操作了鏈表head,最后返回head,即為所求。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 普格县| 南宫市| 大悟县| 同江市| 双流县| 建瓯市| 潼南县| 项城市| 庆元县| 武夷山市| 德庆县| 华阴市| 吉木萨尔县| 兖州市| 博白县| 昌图县| 囊谦县| 新疆| 陵川县| 张家港市| 资阳市| 武宁县| 民权县| 财经| 启东市| 宁强县| 太康县| 宁波市| 乡宁县| 固原市| 大冶市| 郧西县| 达尔| 郧西县| 榆树市| 海城市| 冷水江市| 阜新| 新田县| 乌兰浩特市| 古交市|