qq_51574958 2021-04-23 07:36
浏览 41

pintia中链表类的运行时错误

#include<iostream>
#include<cstdio>
using namespace std;
template <class T>
class Node
{   public:
    T num;

    Node<T> *next;
    Node(T a=0,Node<T> *p=NULL);

    Node(Node<T> &a);
    ~Node();
    T getData(void);
    };
template<class T>
Node<T>::Node(T a,Node<T> *p):num(a),next(p)
{
    cout<<"Node Constructor run"<<endl;
    }
template<class T>
Node<T>::Node(Node<T> &a)
{  num=a.num;
cout<<"Node CopyConstructor run"<<endl;
    }
template<class T>
Node<T>::~Node()
{cout<<"Node Destructor run"<<endl;}
template<class T>
T Node<T>:: getData(void)
{
    return num;}

template<class T>
class LinkList
{
   public:
    Node<T> *position;
    Node<T> *position2;
    Node<T>  headNode;
    int size;
   LinkList(T*s=NULL,int b=0,Node<T> *p1=NULL,Node<T> *p2=NULL);
   ~LinkList()
   {

       position2=headNode.next;
      for(int i=1;i<=size;i++)
      {
          delete position2;
          position2=position2->next;}
        cout<<"LinkList Destructor run"<<endl;

    }
   LinkList(LinkList<T> &s );
   void insertNode(Node<T> &a);
   bool searchNode(T value);
   int  getSize();
   void next();
   Node<T> &currNode()const;
   void  delNode();
   void show();
    };
template <class T>
LinkList<T>::LinkList(T s[],int b,Node<T> *p1,Node<T> *p2):size(b),position(p1),position2(p2)
{  
   position=&headNode;
   position2=&headNode;
    for(int i=0;i<size;i++)
    {  position2=new Node<T>;
       position2->num=s[i];

      position->next=position2 ;
      position=position2 ;

        }

    position=headNode.next;

 

    cout<<"LinkList Constructor run"<<endl;
    }
template<class T>
LinkList<T>::LinkList(LinkList<T> &a)
{
   size=a.size;
   a.position=&a.headNode;
   headNode.num=0;
   position=&headNode;
     for(int i=0;i<size;i++)
    { position2=new Node<T>;

      position->next=position2;
      position=position->next;
      a.position=a.position->next;
      position->num=a.position->num;

        }
cout<<position2->num<<endl;

      cout<<"LinkList CopyConstructor run"<<endl;

    }
template <class T>
void LinkList<T>:: insertNode(Node<T>&a)
{

    a.next=position2->next;
    position2->next=&a;

 

}
template <class T>
bool LinkList<T>::searchNode(T  value)
{    position=&headNode;
       int t=0;
    for(int i=1;i<=size;i++)
    {       position=position->next;

        if(position->num==value)
        {   t=1;return 1;break;
            }


        }

      if(t==0)
       {
           position=headNode.next;

          return false;}
    }
template <class T>
 int LinkList<T>::getSize()
 {
     return size;}
template <class T>
  void LinkList<T>::next()
{position=position->next ;
      }
template <class T>
Node<T>& LinkList<T>::currNode()const
{ return *position;
    }
template <class T>
   void LinkList<T>::delNode()
{    position2=&headNode;

    while(position2->next!=position)
    {  position2=position2->next;

        }
     position2->next=position->next;


    }
 template <class T>
   void LinkList<T>::show()
{
     position=&headNode;
     position2=&headNode;

     for(int i=1;i<=size;i++)
     {    position=position->next;
         cout<<"["<<position->num<<"]";
         }
        cout<<endl;

         }
int main()
{
    int i,a[5]= {0,1,2,3,4};
    for(i=0;i<5;i++)
     scanf("%d",&a[i]);
    LinkList<int> l1(a,5),l2(l1);
    cout<<l2.getSize()<<endl;
    l1.show();

    if (l2.searchNode(2))
        cout<<"Found:"<<l2.currNode().getData()<<endl;
    else
        cout<<"Not Found"<<endl;
    l2.delNode();
    Node <int> *p1=new Node<int>(11);
    l2.insertNode(*p1);
    l2.show();

    return 0;
    }               //代码运行无错误,但是在pintia上出现运行时错误

 

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
    • ¥15 WPF使用Canvas绘制矢量图问题
    • ¥15 用三极管设计一个单管共射放大电路
    • ¥15 孟德尔随机化r语言运行问题
    • ¥15 pyinstaller编译的时候出现No module named 'imp'
    • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
    • ¥15 怎么把多于硬盘空间放到根目录下
    • ¥15 Matlab问题解答有两个问题
    • ¥15 LCD12864中文显示
    • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决