Mn ơi , mn giúp em với , em có để bài là : Bổ sung chương trình mẫu cho phép thêm phần tử vào sau p(tham số truyền vào là 1 con trỏ) danh sách liên kết đơn một giá trị nguyên
em thử cả buổi rồi mà vẫn không được , mn giúp em với, phần void InsertAfter
trong linkedlist.h
ấy ạ , em cảm ơn
main.cpp
#include <iostream>
#include "linkedlist.h"
using namespace std;
int main()
{
linkedlist *list1 = new linkedlist();
element *e;
e = new element(9);
list1->InsertTail(e);
e = new element(10);
list1->InsertTail(e);
e = new element(8);
list1->InsertTail(e);
e = new element(11);
list1->InsertTail(e);
list1->Travel();
list1->DeleteFirst();
cout<<"\n";
list1->Travel();
cout<<"\n";
element *p = new element(8);
//cout<<p->GetData()<<"\n";
list1->InsertAfter(p,111);
list1->Travel();
delete list1;
// cout<<list1->CountList();
}
element.h
#pragma once
class element
{
private:
int data;
element *pointer;
public:
element()
{
data = 0;
pointer = nullptr;
}
element(int a)
{
data = a;
pointer = nullptr;
}
virtual ~element() {};
int GetData() { return data; }
void SetData(int val) { data=val; }
element *GetPointer() { return pointer; }
void SetPointer(element *val) { pointer=val; }
};
linkedlist.h
#pragma once
#include <iostream>
#include "element.h"
using namespace std;
class linkedlist
{
private:
element *head;
element *tail;
int num = 0;
public:
linkedlist()
{
head = NULL;
tail = NULL;
}
virtual ~linkedlist();
element *Gethead() { return head; }
void SetHead(element *val) { head = val; }
element *GetTail() { return tail; }
void SetTail(element *val) { tail = val; }
void InsertHead(element *e)
{
if (head == NULL ) head = tail = e;
else
{
e->SetPointer(head);
head = e;
}
num++;
}
void InsertTail(element *e)
{
if (head == NULL) head = tail = e;
else
{
tail->SetPointer(e);
tail = e;
}
num++;
}
void Travel()
{
element *p = head;
while (p != NULL)
{
cout<<p->GetData()<<"\t";
p = p->GetPointer();
}
}
bool DeleteFirst()
{
if (head == NULL) return false;
else
{
element *p = head;
head = head->GetPointer();
delete p;
return true;
}
}
void RemoveAll()
{
while (head != NULL)
{
element *p = head;
head = head->GetPointer();
delete p;
}
}
int SumList()
{
int t = 0;
while (head != NULL)
{
element *p = head;
head = head->GetPointer();
t += p->GetData();
}
return t;
}
int MaxList()
{
int max = head->GetData();
head = head->GetPointer();
while (head != NULL)
{
element *p = head;
head = head->GetPointer();
if (max < p->GetData()) max = p->GetData();
}
return max;
}
int CountList()
{
int t = 0;
while (head != NULL)
{
t++;
head = head->GetPointer();
}
return t;
}
void InsertAfter(element *p, int data)
{
if (p == NULL)
{
cout<<"ERROR";
return;
}
element *e = new element(data);
e->SetPointer(p->GetPointer());
p->SetPointer(e);
}
};