|
发表于 2020-4-10 10:22:52
|
显示全部楼层
#include <iostream>
using namespace std;
class ListNode {
friend class LinkList; //声明LinkList为友元类
public:
ListNode() { next = NULL; };
ListNode(int x) {
val = x;
next = NULL;
}
private:
int val; //数据域
ListNode *next; //指针域
};
class LinkList {
public:
LinkList(int* arr, int len); //构造函数
~LinkList(); //析构函数
void Output();
private:
ListNode* head;//头指针,指向第一个结点
};
LinkList::LinkList(int * arr, int len)
:head(NULL)
{
if (arr == NULL || len <= 0)
{
return;
}
//逆序遍历数组,链表头插。保持数组的顺序
for (int nIndex = len - 1; nIndex >= 0; --nIndex)
{
ListNode* pNode = new ListNode();
pNode->val = arr[nIndex];
pNode->next = head;
head = pNode;
}
}
LinkList::~LinkList()
{
while (head != NULL)
{
ListNode* pNode = head->next;
delete head;
head = pNode;
}
}
void LinkList::Output()
{
ListNode* pNode = head;
while (pNode != NULL)
{
cout << pNode->val << endl;
pNode = pNode->next;
}
}
int main()
{
int arr[9] = { 1,2,3,4,5,6,7,8,9 };
LinkList linklist(arr, 9);
linklist.Output();
return 0;
} |
|