日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

添加翻转功能的list类

發布時間:2025/3/21 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 添加翻转功能的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); }

總結

以上是生活随笔為你收集整理的添加翻转功能的list类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。