国产探花免费观看_亚洲丰满少妇自慰呻吟_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,即為所求。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泽库县| 上蔡县| 榕江县| 临桂县| 巴东县| 桓台县| 太仆寺旗| 六安市| 安西县| 越西县| 萨迦县| 兴安盟| 上林县| 正宁县| 香格里拉县| 临潭县| 滦南县| 东阳市| 鄂托克前旗| 福安市| 射洪县| 上饶市| 呼伦贝尔市| 会宁县| 中西区| 英德市| 洛浦县| 含山县| 通榆县| 郧西县| 江安县| 宝丰县| 璧山县| 金川县| 岳池县| 辽源市| 祁门县| 湟中县| 玉树县| 博客| 扎赉特旗|