标签:
解答:
①求链表最小值
//非递归方法
void Get_Min(LinkedNode* ptr)
{
int min = 999999999;//把max故意设置得很大
while(ptr!= NULL)
{
if(min > ptr->data) min = ptr->data;
ptr=ptr->next;
}
cout<<"最小值为:"<<min<<endl;
}
//递归方法
int Get_Min(Node * ptr)
{
if(ptr->next == NULL) return ptr->data;
return ptr->data > Min(ptr->next) ? Min(ptr->data) : ptr->data;
}
②链表元素逆置的方法
//递归方法
void Reverse(LinkedNode* pCur,LinkList& ListHead)
{
if( (NULL==pCur)||(NULL==pCur->next) )
{
ListHead=pCur;
}
else
{ LinkedNode* pNext=pCur->next;
Reverse(pNext,ListHead); //递归逆置后继结点
pNext->next=pCur; //将后继结点指向当前结点。
pCur->next=NULL;
}
}
//非递归方法
void Reverse2(LinkList& ListHead)
{
cout<<"Begin to Reverse the List"<<endl;
if( (NULL==ListHead)||(NULL==ListHead->next) )return ; //边界检测
LinkedNode* pPre=ListHead; //先前指针
LinkedNode* pCur=pPre->next; //当前指针
LinkedNode* pNext=NULL; //后继指针
while(pCur!=NULL)
{
pNext=pCur->next;
pCur->next=pPre;
pPre=pCur;
pCur=pNext;
}
ListHead->next=NULL;
ListHead=pPre; //记录下新的头结点
标签:
原文地址:http://blog.csdn.net/mxx0526/article/details/51340688