数据结构-链表-作业

  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;        //记录下新的头结点  
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值