64,648
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
template<class T>
struct Node
{
T Date;
Node* next;
};
template<class T>
class Tlist
{
private:
Node<T>* head;
public:
Tlist()
{
head=NULL;
}
void deletelist(T Date);
void insertlist(T aDate,T bDate);
void outputlist();
};
template<class T>
void Tlist<T>::insertlist(T aDate,T bDate)//在节点a之前插入节点b
{
//cout << bDate << endl;
Node<T>*p,*q,*s; //p指向节点a,q指向节点a_k,s指向节点b
s=(Node<T>*)new(Node<T>); //动态分配新节点
s->Date = bDate; //设b为此节点
p=head; //若是空表,使b作为第一个节点
if(head == NULL)
{
head = s;
s->next=NULL;
}
else if(p->Date == aDate) //若a是第一个节点
{
s->next=p;
head=s;
}
else
{
while(p != NULL && p->Date != aDate)//查找节点a ----------------here
{
cout << p->Date << endl;
q = p;
p=p->next;
}
cout << bDate << endl;
if(p != NULL) //若有节点a
{
q->next=s;
s->next=p;
}
else //若没有节点a
{
q->next=s;
s->next=NULL;
}
}
}
template<class T>
void Tlist<T>::deletelist(T aDate) //设aDate是要删除的节点a中的数据成员
{
Node<T> *p,*q; //p用于指向节点a,q用于指向节点a的前一个节点
p=head;
if(p=NULL) //若是空表
return;
if(p->Date=aDate) //若a是第一个节点
{
head=p->next;
delete p;
}
else
{
while(p->Date != aDate && p->next != NULL)
{
q=p;
p=p->next;
}
if(p->Date=aDate)
{
q->next=p->next;
delete p;
}
}
}
template<class T>
void Tlist<T>::outputlist()
{
Node<T>*current=head;
while(current != NULL)// ---------------------------------here
{
cout<<current->Date<<" ";
current=current->next;
}
cout<<endl;
}
int main()
{
Tlist<int> A;
int Date[5]= {64,4,76,89,97};
A.insertlist(0,Date[0]); //建立链表A首节点
for(int i=1; i<5; i++)
A.insertlist(0,Date[i]);//顺序向后插入
A.outputlist(); //输出链表
return 0;
}
#include<iostream>
using namespace std;
#include"list.h"
template<class T>
void Tlist<T>::insertlist(T aDate,T bDate)//在节点a之前插入节点b
{
Node<T>*p,*q,*s; //p指向节点a,q指向节点a_k,s指向节点b
s=(Node<T>*)new(Node<T>); //动态分配新节点
s->Date=bDate; //设b为此节点
p=head; //若是空表,使b作为第一个节点
if(head==NULL) /***这里要有判断等啊,不是赋值,下面同此*****/
{
head=s;
s->next=NULL;
}
else if(p->Date==aDate) //若a是第一个节点 /***这里要有判断等啊,不是赋值,下面同此*****/
{
s->next=p;
head=s;
}
else
{
while(p->next!=NULL&&p->Date!=aDate)//查找节点a
{
q=p;
p=p->next;
}
if(p->Date==aDate) //若有节点a 这里要有等号啊 /***这里要有判断等啊,不是赋值,下面同此*****/
{
q->next=s;
s->next=p;
}
else //若没有节点a
{
p->next=s;
s->next=NULL;
}
}
}
template<class T>
void Tlist<T>::deletelist(T aDate) //设aDate是要删除的节点a中的数据成员
{
Node<T> *p,*q; //p用于指向节点a,q用于指向节点a的前一个节点
p=head;
if(p=NULL) //若是空表
return;
if(p->Date==aDate) //若a是第一个节点 /***这里要有判断等啊,不是赋值,下面同此*****/
{
head=p->next;
delete p;
}
else
{
while(p->Date!=aDate&&p->next!=NULL)
{
q=p;
p=p->next;
}
if(p->Date==aDate) /***这里要有判断等啊,不是赋值,下面同此*****/
{
q->next=p->next;
delete p;
}
}
}
template<class T>
void Tlist<T>::outputlist()
{
Node<T>*current=head;
while(current->next!=NULL)
{
cout<<current->Date<<" ";
current=current->next;
}
cout<<endl;
}
int main()
{
Tlist<int> A;
int Date[5]={64,4,76,89,97};
A.insertlist(0,Date[0]); //建立链表A首节点
for(int i=1;i<5;i++)
A.insertlist(0,Date[i]);//顺序向后插入
A.outputlist(); //输出链表
return 0;
}