码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构-链表-作业

时间:2016-05-13 03:10:43      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:

  1. 要求大家按照课件中的方式定义链表数据结构,链表的成员函数自己定义,有哪些功能也自己定义,但是必须有如下两个函数:
    返回链表中最小的元素:Type SeqList::Get_Min();//使用非递归方式
    将链表中元素逆置:List::reverse();//使用递归和非递归两种方式,非递归方式只允许常数单位个额外空间
  2. 设计主函数,主函数中能够对所作函数进行测试,并且能够将链表中最小值找到,将链表逆置。

解答:
①求链表最小值

//非递归方法
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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!