📄 linkedlist.h
字号:
//linkedlist.h
#include<malloc.h>
#ifndef LINKEDLIST_CLASS
#define LINKEDLIST_CLASS
#include <iostream>
#include <cstdlib>
using namespace std;
#ifndef NULL
const int NULL = 0;
#endif // NULL
template <class T>
class LNode
{private:
public:
T num;
LNode<T> *_next;
};
template <class T>
class LinkList
{
private:
public:
LNode<T> *_head;
int _len;
LNode<T> *initList(void) // 建立一个带头节点的空链表的函数
{
LNode<T> *h;
h=(LNode<T> *)malloc(sizeof(LNode<T>));
h->num=0; // 头节点的指数赋值为-1
h->_next=NULL;
return h;
}
void CreatPolyn(LinkList<T> p,int m,T j); //创建链表
};
template <class T>
void LinkList<T>::CreatPolyn(LinkList<T> p,int m,T j) //创建链表
{
LNode<T> *h,*e,*q;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
h=p.initList(); //创建一个带头节点的空链表
q=e=h;
p._head=h;
p._len=m;
for(int i=1;i<=m;++i)
{
cout<<"请输入第"<<i<<"项的数:";// 输入数
cin>>j;
e=(LNode<T> *)malloc(sizeof(LNode<T>));
e->num=j; // 把新节点插入到链表中
e->_next=NULL;
q->_next=e;
q=q->_next;
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
h=p._head;//显示构建的链表节点中的数值
e=h->_next;
int i1=1;
while(e)
{
cout<<"链表中节点"<<i1<<"中存储的值是"<<endl;
cout<<e;
num<<endl;
m--;
e=e->_next;
i1++;
}
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
e=q=p._head;// 使用循环释放链表中每个节点的内存空间
int i2=0;
while(p._len+1)
{
q=q->_next;
cout<<"释放"<<i2<<"节点!"<<endl;
free(e); //释放链表中节点的内存空间
e=q;
p._len--;
i2++;
} // 释放链表中节点的内存空间
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -