数据结构-链表-作业

来源:互联网 发布:世界经济学家排名 知乎 编辑:程序博客网 时间:2024/06/07 09:58
  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 0
原创粉丝点击