这节课主要是链表的一些操作(创建,插入,遍历)
老师代码
#include<iostream>
using namespace std;
struct CLinkedListNode//创建一个链表节点
{
int Data;
CLinkedListNode *Link;
CLinkedListNode();
};
CLinkedListNode::CLinkedListNode()
{
Data=0;
Link=NULL;//首先创建一个空节点;
}
class CLinkedList//创建一个链表类
{
private:
CLinkedListNode *HeadPtr;//头节点
CLinkedListNode *CurrNodePtr; //当前节点
public:
CLinkedList();
~CLinkedList();
void Insert(int Data);//头插
void Append(int Data);//尾插
int GetFirstData();//得到CurrNodePtr所指向的数据
int GetNextData(); //得到CurrNodePtr指向的下一个数据
};
CLinkedList::CLinkedList()
{
HeadPtr=NULL;
CurrNodePtr=NULL;
}
CLinkedList::~CLinkedList()//创建一个析构函数,当这个链表被消亡时自动调用
{
CLinkedListNode *RemovingNodePtr;
RemovingNodePtr=HeadPtr;
while (RemovingNodePtr!=NULL)
{
HeadPtr=RemovingNodePtr->Link;//从链表的首部开始一个一个的消除掉
delete RemovingNodePtr;
RemovingNodePtr=HeadPtr;
}
}
void CLinkedList::Insert(int Data)
{
CLinkedListNode *NewNodePtr;
NewNodePtr=new CLinkedListNode;
NewNodePtr->Data=Data;
NewNodePtr->Link=HeadPtr;
HeadPtr=NewNodePtr;
/*
if(HeadPtr==NULL)//头插这个不需要
{
HeadPtr=NewNodePtr;
}
else
{
NewNodePtr->Link=HeadPtr;
HeadPtr=NewNodePtr;
}
*/
}
void CLinkedList::Append(int Data)
{
CLinkedListNode *NewNodePtr;
CLinkedListNode *LastNodePtr;
NewNodePtr=new CLinkedListNode;
NewNodePtr->Data=Data;
if(HeadPtr==NULL)
{
HeadPtr=NewNodePtr;
}
else
{
LastNodePtr=HeadPtr;
while(LastNodePtr->Link!=NULL)
{
LastNodePtr=LastNodePtr->Link;
}
LastNodePtr->Link=NewNodePtr;
}
}
int CLinkedList::GetFirstData()
{
CurrNodePtr=HeadPtr;
if (CurrNodePtr!=NULL)
{
return CurrNodePtr->Data;//从链表第一个数据开始一个一个遍历
}
}
int CLinkedList::GetNextData()//从用户新输入的数据开始一个一个遍历
{
if(CurrNodePtr!=NULL)
{
CurrNodePtr=CurrNodePtr->Link;
if(CurrNodePtr!=NULL)
{
return CurrNodePtr->Data;
}
}
return 0;
}
int main()
{
CLinkedList LinkedList1,LinkedList2;//创建两个链表
cout<<"Enter inserting data: ";
for(;;)
{
int Data;
cin>>Data;
if(Data==0)
{
break;//数据以0结束
}
LinkedList1.Insert(Data);
}
int Data1;
Data1=LinkedList1.GetFirstData();
while(Data1!=0)
{
cout<<Data1<<" ";
Data1=LinkedList1.GetNextData();
}
cout<<endl;
cout<<"----------"<<endl;
cout<<"Enter appending data: ";
for(;;)
{
int Data;
cin>>Data;
if(Data==0)
{
break;
}
LinkedList2.Append(Data);
}
int Data2;
Data2=LinkedList2.GetFirstData();
while(Data2!=0)
{
cout<<Data2<<" ";
Data2=LinkedList2.GetNextData();
}
cout<<endl;
return 0;
}