數據結構鏈表一章已學習完畢,因此編了一個程序用以實現鏈式表的構建,插入,查找,求最大值,以及原地逆轉。
除了求最大值與原地逆轉之外都是常規操作,不再贅述,着重分析最大值與逆轉的算法。
一、最大值的求解:通過max函數實現,定義結構體指針p指向l的首元節點,max初值為p->data,通過if判斷是否有更大的數,將更大的數賦值給max,同時p指向下一個節點,由此求出最大的數。代碼如下:
void max(LinkList l,int n)//求最大值
{
int max;
LinkList p;
p=l->next;
max=p->data;
for(int i=0;i
{
if(maxdata)
max=p->data;
else max=max;
p=p->next;
}
cout<
}
二、將鏈表原地逆轉:方法其實很簡單,定義兩個指針變量p,q分別指向l的首元節點與之后的節點,然后令p成為q的后繼,之后令q指向下一個節點,p的值變為q,一直重復直到q變為NULL,即到達了尾節點,此時令首元節點變為p,將尾節點制空即可。代碼如下:
void resver(LinkList &l,int n)
{
LinkList p,q,temp=NULL;//temp為中間變量
p=l->next;//p指向首元節點
q=l->next->next;
if(p==NULL||q==NULL)
{
cout<
return ;
}
while(q!=NULL)
{
temp=q->next;
q->next=p;//令p變為q的后繼
p=q;//p往后移動
q=temp;//q指向下一個節點
}
l->next->next=NULL;//設置尾節點為空
l->next=p;//設置首元節點為p
cout<
while(p!=NULL)
{
co