.[題目分析] 本題要求對單鏈表結點的元素值進行運算判斷元素值是否等於其序號的平方減去其前驅的值這裡主要技術問題是結點的序號和前驅及後繼指針的正確指向
int Judge(LinkedList la)∥la是結點的元素為整數的單鏈表本算法判斷從第二結點開始每個元素值是否等於其序號的平方減去其前驅的值如是返回true;否則返回false
{p=la>next>next;∥p是工作指針初始指向鏈表的第二項
pre=la>next;∥pre是p所指結點的前驅指針
i=;∥i是la鏈表中結點的序號初始值為
while(p!=null)
if(p>data==i*ipre>data){i++;pre=p;p=p>next;}∥結點值間的關系符合題目要求
else break;∥當前結點的值不等於其序號的平方減去前驅的值
if(p!=null)return(false);∥未查到表尾就結束了
else return(true);∥成功返回
}∥算法結束
[算法討論]本題不設頭結點也無影響另外算法中還可節省前驅指針pre其算法片段如下
p=la;∥假設無頭結點初始p指向第一元素結點
i=;
while(p>next!=null)∥初始p>next指向第二項
if(p>next>data= =i*ip>data)
{i++;p=p>next;}
if(p>next!=null)return(false);∥失敗
else return(true);∥成功
[] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] []
From:http://tw.wingwit.com/Article/program/sjjg/201311/23341.html