【问题描述】
请设计一个链表类,实现链表的初始化、插入、删除和打印操作。
节点的定义如下:
typedef int elementType;
typedef struct node
{
elementType data;
node* next;
} LList, *PList;
链表类的定义及要求如下:
class linkedList
{
public:
linkedList();//构造函数
virtual ~linkedList();//析构函数,注意要链表中所有节点的资源
void insert( int value );//警告:必须初始化才能使用!
bool initiate();//初始化单链表,使用new操作创建头结点。如果创建失败,则返回false,否则返回true
bool isEmpty();//判断单链表是否为空
//删除单链表中第pos个元素结点,并将删除的节点的值存在value中。
//注意:如果链表为空、删除位置大于链表长度、以及删除位置为0的情况,需要终止删除并输出相应信息
bool remove( int pos, int& value );
void print();//顺序打印单链表,如果是单链表为空,则输出 Empty
int Length();//返回单链表长度。如果是单链表为空,则返回-1
private:
LList *head;
int len;
};
main函数:
int main(int argc, char* argv[])
{
linkedList L1;
int n;
int val;
//初始化链表
if(!L1.initiate())
return 0;
cin>>n;//输入链表中数据个数
for(int i=0; i>val;
L1.insert(val);
}
cout << "Origin Length:" << L1.Length() << endl;//输出链表长度
cout <>n;//输入需要删除的数据的位置
if (L1.remove(n,val))
{
//删除位置n的数据,并将删除的数据值放在val中
cout<<"Delete the data at position("<
2021-06-30 13:04:59
4KB
c++
1