添加翻转功能的list类
生活随笔
收集整理的這篇文章主要介紹了
添加翻转功能的list类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<iostream>
using namespace std;struct node
{int data;node *next;
};
class List
{
public:List();List(List &L);~List();void insert(const int);bool IsEmpty();size_t ListLen();int GetElem(size_t);void append(size_t,int);//在第i個位置插入數值void Display();void remove(size_t);int FindElem(int elm);void merge(List &L);node* GetFN();node* GetEN();void reverse();
private:node *p;
};
List::List()
{p = new node;p->next = NULL;
}
List::List(List &L)
{p = L.GetFN();
}
List::~List()
{delete p;
}
node* List::GetFN()
{return p;
}
node* List::GetEN()
{node *q = p->next, *pre = q;while (q){pre = q;q = q->next;}return pre;
}
void List::insert(const int a)
{node *q = p;while (q->next){q = q->next;}node *m = new node;m->data = a;m->next = NULL;q->next = m;
}
void List::Display()
{node *q = p->next;while(q){cout << q->data << " ";q = q->next;}cout << endl;
}
bool List::IsEmpty()
{node *q = p->next;return q==NULL?1:0;
}
size_t List::ListLen()
{if(IsEmpty())return 0;node *q = p->next;size_t i = 0;while (q){++i;q = q->next;}return i;
}
int List::GetElem(size_t i)
{node *q = p->next, *pre = q;while (i--){if(!q)throw runtime_error("error"); pre = q;q = q->next;}return (*pre).data;
}
void List::append(size_t i,int a)
{node *q = p->next, *pre = q;while (i--){if(!q)throw runtime_error("error"); pre = q;q = q->next;}node *m = new node;m->data = a;m->next = q;pre->next = m;
}
void List::remove(size_t i)
{node *q = p->next, *pre = q;while (--i){if(!q)throw runtime_error("error"); pre = q;q = q->next;}pre->next = q->next;delete q;
}
void List::merge(List &L)
{this->GetEN()->next = L.GetFN()->next;
}
int List::FindElem(int elm)
{node *q = p->next, *pre = q;int i = 0;while (q){++i;if((*q).data == elm)return i;pre = q;q = q->next;}if(q == NULL)throw runtime_error("can't find"); elsereturn i;
}
//翻轉
void List::reverse() {if (p->next == NULL)return;node *ptr = p->next;while(ptr->next != NULL){node *temp = ptr->next;ptr->next = ptr->next->next;temp->next = p->next;p->next = temp;}} int main() {List l,m;l.insert(1);l.insert(12);l.insert(10);l.Display();l.reverse();l.Display();m.insert(0);m.insert(-90);m.Display();l.merge(m);l.Display();cout << endl;//cout << l.GetElem(3); }
//翻轉
void List::reverse() {if (p->next == NULL)return;node *ptr = p->next;while(ptr->next != NULL){node *temp = ptr->next;ptr->next = ptr->next->next;temp->next = p->next;p->next = temp;}} int main() {List l,m;l.insert(1);l.insert(12);l.insert(10);l.Display();l.reverse();l.Display();m.insert(0);m.insert(-90);m.Display();l.merge(m);l.Display();cout << endl;//cout << l.GetElem(3); }
總結
以上是生活随笔為你收集整理的添加翻转功能的list类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全屏
- 下一篇: iOS开发之自定义View