#include <iostream>
using namespace std;
typedef struct _node{
int data;
struct _node* next;
_node(int e,_node* p=nullptr):data(e),next(p){}
}node;
class list{
public:
list():m_start(new node(-1,nullptr)),m_tail(m_start),m_length(0){}
~list(){
while(m_start != nullptr){
node* pdel = m_start;
m_start = m_start->next;
delete pdel;
}
m_start = m_tail = nullptr;
}
void append(int e);
bool insert(int index,int e);
void remove(int e);
int find(int e);
void replace(int olddata,int newdata);
int length();
int getdata(int index);
private:
node* m_start;
node* m_tail;
int m_length;
};
void list::append(int e){
node* pnew = new node(e,nullptr);
m_tail->next = pnew;
m_tail = pnew;
++m_length;
}
bool list::insert(int index,int e){
if(index < 0 || index > m_length){
cout << "index not in the range\n";
return false;
}else{
int i = 0;
node* prevence = m_start;
for(; i < index ; ++i){
prevence = prevence->next;
}
node* pnew = new node(e,nullptr);
pnew->next = prevence->next;
prevence->next = pnew;
++m_length;
return true;
}
}
int list::find(int e){
int i = 0;
node* prevence = m_start;
for(; i < m_length; ++i){
if(prevence->next->data == e){
return i;
}
prevence = prevence->next;
}
return -1;
}
void list::remove(int e){
int i = 0;
node* prevence = m_start;
for (; i < m_length ; ++i){
if(prevence->next->data == e){
node* pdel = prevence->next;
prevence->next = pdel->next;
delete pdel;
--m_length;
}
prevence = prevence->next;
}
}
void list::replace(int olddata,int newdata){
int i = 0;
node* prevence = m_start;
for(; i < m_length; ++i){
if(prevence->next->data == olddata){
prevence->next->data = newdata;
}
prevence = prevence->next;
}
}
int list::length(){
return m_length;
}
int list::getdata(int index){
if(index < 0 || index > m_length-1){
cout << "index not in the range\n";
return 0;
}else{
int i = 0;
node* prevence = m_start;
for(; i < index ; ++i){
prevence = prevence->next;
}
return prevence->next->data;
}
}
int main(){
list li;
for(int i = 0 ; i < 10 ; ++i){
li.append(i);
}
li.insert(0,-1);
for(int i = 0 ; i < li.length(); ++i){
cout << li.getdata(i) << ends;
}
cout << endl;
li.remove(5);
for (int i = 0; i < li.length(); ++i){
cout << li.getdata(i) << ends;
}
cout << endl;
li.append(-1);
li.replace(-1,0);
for (int i = 0; i < li.length(); ++i){
cout << li.getdata(i) << ends;
}
cout << endl;
cout << "8 index is :" << li.find(8) << endl;
return 0;
}
listC++
最新推荐文章于 2025-06-23 23:10:13 发布