#include
#include
#include
#include
using namespace std;
struct LinkNode;
using sharedPtr = std::shared_ptr;
struct LinkNode
{
int val;
sharedPtr next;
};
class LinkList
{
private:
int length;
sharedPtr head;
public:
LinkList();
LinkList(const LinkList &otherlist);
void inserToList(int ins);
void deleatFromListBeginHead();
void deleatFromListBeginHead(int num);
void show();
int getLength();
sharedPtr getHead();
~LinkList();
};
LinkList::LinkList() :length(0)
{
head = nullptr;
}
LinkList::LinkList(const LinkList &otherlist)
{
auto con = otherlist.head;
while (con)
{
inserToList(con->val);
con = con->next;
}
}
void LinkList::inserToList(int ins)
{
auto node = std::make_shared();
node->val = ins;
node->next = head;
head = node;
++length;
}
void LinkList::deleatFromListBeginHead()
{
if (head)
{
head = head->next;
–length;
cout << “delete finish” << endl;
}
else
{
cout << “this list is empty” << endl;
}
}
void LinkList::deleatFromListBeginHead(int num)
{
if (num <= length)
{
for (int i = 0; i < num; i++)
{
head = head->next;
–length;
}
cout << “delete finish” << endl;
}
else
{
cout << “num is valid” << endl;
}
}
void LinkList::show()
{
sharedPtr node = head;
while (node)
{
cout << node->val << “->”;
node = node->next;
if (!node->next)
{
cout << node->val;
return;
}
}
}
int LinkList::getLength()
{
return length;
}
sharedPtr LinkList::getHead()
{
return head;
}
LinkList::~LinkList()
{
}
int main()
{
LinkList *l = new LinkList();
srand((unsigned)time(NULL));
for (int i = 0; i < 15; i++)
{
int temp = rand() % 100;
cout << temp << “->”;
l->inserToList(temp);
}
cout << endl;
l->show();
cout << endl;
l->deleatFromListBeginHead(10);
system("pause");
return 0;
}