(List.h)
#pragma once
#include<iostream>
#include<vector>
using namespace std;
struct ListNode
{
int val;
ListNode *next;
ListNode(int x) :val(x), next(NULL) {}
};
class List
{
ListNode *head;
public:
ListNode *bulidList(vector<int>vec);//创建链表
void printList();//打印链表
ListNode *changeList(int val,int changeval);//修改链表值
ListNode *addList(int val,int addval);//增加链表值
ListNode *deleteList(int val);//删除链表值
void destroyList();//销毁链表
};
(List.cpp)
#include "List.h"
#include<iostream>
#include<vector>
ListNode *List::bulidList(vector<int>vec)
{
if (vec.size() == 0)
{
return NULL;
}
head = new ListNode(vec[0]);
ListNode *tail=head;
for (int i = 1; i < vec.size(); i++)
{
ListNode *tmp = new ListNode(vec[i]);
tail->next = tmp;
tail = tmp;
}
return head;
}
void List::printList()
{
ListNode *tmp=head;
while (tmp)
{
cout << tmp->val<<" ";
tmp = tmp->next;
}
cout<<endl;
}
ListNode *List::changeList(int val,int changeval)
{
ListNode *tmp=head;
while(tmp)
{
if(tmp->val==val)
{
tmp->val=changeval;
}
tmp=tmp->next;
}
return head;
}
ListNode *List::addList(int val,int addval)
{
ListNode *tmp=head;
ListNode *pPre=NULL;
while(tmp)
{
if(tmp->val==val)
{
ListNode *newnode=new ListNode(addval);
if(tmp==head)
{
newnode->next=head;
head=newnode;
}
else
{
pPre->next=newnode;
newnode->next=tmp;
}
}
pPre=tmp;
tmp=tmp->next;
}
return head;
}
ListNode* List::deleteList(int val)
{
ListNode* tmp=head;
ListNode* pPre=NULL;
while(tmp)
{
if(tmp->val==val)
{
if(tmp==head)
{
head=head->next;
tmp=head;
continue;
}
else
{
Ppre->next=tmp->next;
delete tmp;
tmp=pPre->next;
continue;
}
}
pPre=tmp;
tmp=tmp->next;
}
return head
}
void destroyList()
{
ListNode* tmp=head;
while(tmp)
{
head=head->next;
delete tmp;
tmp=head;
}
}
(main.cpp)
#include "List.h"
#include<iostream>
#include<vector>
int main()
{
vector<int>a = { 1,2,3,4,5,6 };
List lst;
ListNode *head=lst.bulidList(a);//创建链表
lst.printList();
head = lst.changeList(3, 6);//改变链表值
lst.printList();
head = lst.addList(1, 0);//增加链表值
lst.printList();
head = lst.deleteList(1);//删除链表值
lst.printList();
lst.destroyList();//销毁链表
lst.printList();
return 0;
}