LinkList.h
#pragma once
#include<iostream>
using namespace std;
#include<string>
#include <fstream>
struct Node
{
int data;
Node* next;
};
class LinkList
{
private:
Node* head;
public:
LinkList();
LinkList(string fname);
LinkList(int array[],int n);
void ShowAll();
void HeadAfterInert(int e);
Node* SearchNode(int e);
void InsertAfterNode(Node *node,int e);
void RemoveNode(Node *node);
void RemoveAfterNode(Node* node);
void RemoveHeadAfterNode();
void SearchRemove(int e);
};
LinkList.cpp
#include "LinkList.h"
LinkList::LinkList()
{
head = NULL;
}
LinkList::LinkList(string fname)
{
head = NULL;
ifstream fin(fname);
int n;
fin >> n;
Node* tail = NULL;
for (int i = 0; i < n; i++)
{
int data;
fin >> data;
Node* p = new Node();
p->data = data;
p->next = NULL;
if (head == NULL)
head = p;
else
tail->next = p;
tail = p;
}
fin.close();
}
LinkList::LinkList(int array[],int n)
{
head = NULL;
for (int i = 0; i < n; i++)
{
HeadAfterInert(array[i]);
}
}
void LinkList::ShowAll()
{
Node* p = head;
while (p!=NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
void LinkList::HeadAfterInert(int e)
{
Node* p = new Node();
p->data = e;
if (head == NULL)
{
p->next = NULL;
head = p;
return;
}
p->next = head;
head = p;
}
Node* LinkList::SearchNode(int e)
{
Node* p = head;
while (p != NULL)
{
if (p->data == e)
return p;
p = p->next;
}
return NULL;
}
void LinkList::RemoveAfterNode(Node* node)
{
Node* p = node;
if (p->next != NULL)
{
Node* d = p->next;
p->next = d->next;
delete(d);
}
}
void LinkList::RemoveHeadAfterNode()
{
Node* p = head->next;
head->next = p->next;
delete(p);
}
void LinkList::InsertAfterNode(Node* node, int e)
{
Node* p = new Node();
p->data = e;
p->next = node->next;
node->next = p;
}
void LinkList::RemoveNode(Node *node)
{
Node* prev = NULL, * p = head;
if (p == NULL)
return;
while (p!=NULL)
{
if (p == node)
break;
prev = p;
p = p->next;
}
if (prev != NULL)
prev->next = p->next;
else
head = p->next;
delete(p);
}
void LinkList::SearchRemove(int e)
{
Node * p = SearchNode(e);
RemoveNode(p);
}
main.cpp
#include<iostream>
using namespace std;
#include"LinkList.h"
int main()
{
LinkList L("data.txt");
L.ShowAll();
Node *p = L.SearchNode(9);
cout << p->data << endl;
L.RemoveAfterNode(p);
L.ShowAll();
L.RemoveNode(p);
L.ShowAll();
p = L.SearchNode(4);
L.InsertAfterNode(p, 200);
L.ShowAll();
L.SearchRemove(200);
L.ShowAll();
return 0;
}