毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

无序单链表-数据结构课程设计 第2页

更新时间:2008-12-14:  来源:毕业论文

单链表程序
 Node <T> *DeleteAfter(void);
};//Node.cpp
#include <iostream.h>
#include "Node.h"

template <class T>
Node<T>::Node(const T& item,Node<T> *ptr):data(item),next(ptr)
{}


template <class T>
Node<T>::~Node(void)
{}


template <class T>
Node<T> * Node<T>::NextNode(void) const
{
  return next;
}

template <class T>
void Node<T>::InsertAfter(Node<T> *p)
{
 p->next=next;     //将当前结点的后继结点链接到结点 p 之后
 next=p;       //将结点 p 作为当前结点的后继结点
}

template <class T>
Node<T> * Node<T>::DeleteAfter(void)
{
  Node<T> *ptr=next;            //保存当前结点的后继结点
  if(ptr==NULL)   return NULL;   //若没有后继结点,则返回空指针
  next=ptr->next;                //当前结点指向其原来的后继的后继,即 ptr 的后继
  return ptr;                    //返回指向被删除结点的指针
}

//链表类的定义
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#include"Node.cpp"
template<class T>
class LinkedList
{
 private:
  Node<T> *front,*rear;        //定义指向头指针和指向尾指针
  Node<T> *prevptr,*currptr;   //用于访问数据、插入和删除结点指针
  int size;                   //表中的结点数
  int position;                //表中当前结点位置计数
  Node<T>*GetNode(const T& item,Node<T>*ptr=NULL); //申请结点的函数
  void FreeNode(Node<T>*p);       //释放结点的函数

 public:单链表程序
  LinkedList(void);     //构造函数
  ~LinkedList(void);    //析构函数
  int Size(void)const;      //取表中结点大小的函数
  int SetPosition(int pos);  //重定位当前结点的函数
        int Getposition(void)const;  //取当前结点位置的函数 
  int NextNode(void);        //将后继结点设置为当前结点的函数
  int InsertAt(const T&item);//在当前结点处插入新结点的函数
  void InsertAfter(const T&item); //在当前结点后插入新结点的函数
  void DeleteAt(void);   // 删除当前结点的函数
        void DeleteAfter(void); //删除当前结点后继的函数
  T GetData(void)const; //获取当前结点数据的函数
     void SetData(const T& item);  //修改当前结点数据的函数  
  bool IsEmpty(void)const;//判断链表是否为空的函数
        void Clear(void); //清空链表的函数
  void WuXu(int k);        //显示最小值
};
# endif

// 链表的类的实现文件 LinkedList.cpp
#include"LinkedList.h" 
#include<iostream.h>
#include<stdlib.h>

template <class T>
Node<T>*LinkedList<T>::GetNode(const T&item,Node<T>*ptr)    //申请结点空间的函数
{
 Node<T>*newNode=new Node<T>(item); 

 if(!newNode)                    //若动态内存申请失败,给出相应的提示并返回空指针
 {
  cerr<<" GetNode: Memoery allocation failed!"<<endl;
  return NULL;

 }
    return newNode;   //返回指向新生成结点的指针
}template <class T>
void LinkedList<T>::FreeNode(Node<T>*ptr) //释放结点空间的函数
{
 if(!ptr)   //若ptr为空,则给出相应提示并返回
 {
  cerr<<"FreeNode: invaild node pointer!"<<endl;
  return ;

 }

 delete ptr;//释放结点占用的内存空间
}


template <class T>
LinkedList<T>:: LinkedList(void)//建立一个空链表
{
 front=NULL;
 rear=NULL;
 prevptr=NULL;
 currptr=NULL;
 size=0;
 position=-1;

}
template <class T>
LinkedList<T>::~LinkedList(void) //析构函数
{
 Clear();                     //清空链表,释放所有的结点的内存空间
}

template <class T>
  
int LinkedList<T>::Size(void)const   // 取连表的大小的函数
{
 return size;

}
template<class T>
int LinkedList<T>::NextNode(void)  //将当后继结点设置为当前结点的函数
{
 
 if(position>=0&&position<size)//若当前结点存在,将其后继结点设置为当前结点
 {
   position++;
   prevptr=currptr;
   currptr=currptr->NextNode();

 }

 else
 {
 
  position=0;
  prevptr=currptr;
     currptr=currptr->NextNode();     //否则将当前结点的位置设为表尾后   
 }

 return position;  //返回新的位置
}


template <class T> 
int LinkedList<T>:: Getposition(void)const
{
 return position;
}


template <class T> 
int LinkedList<T>::SetPosition(int pos)  //重置当前结点位置的函数
{
 if(!size) return -1;              //若为空,则返回-1 
 prevptr=NULL;                 //寻找对应结点
 currptr=front;
 position=0;
 for(int k=0;k<pos;k++)//寻找对应结点
 {
  position++;
  prevptr=currptr;
  currptr=currptr->NextNode();
 }
         //返回当前结点位置
 return position;}template <class T>
int  LinkedList<T>::InsertAt(const T&item) //在当前结点处插入新的结点的函数
{
 
 Node<T> L*newNode; 

    if(!size)   //在空表中插入
 {
   newNode=GetNode(item,front);
   front=rear=newNode;
   postion=0;
 }

      else if(!prevptr)  //在表头结点插入

   {
       newNode=GetNode(item,front);
       front=newNode;

   }
     else   //在表中间位置插入
  {
    newNode=GetNode(item, currptr);
    prevptr->InsertAfter(newNode);
  }
   size++;         //增加链表的长度
   currptr=newNode;//新插入的结点作为当前结点

上一页  [1] [2] [3] 下一页

无序单链表-数据结构课程设计 第2页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。