02-线性结构2. Reversing Linked List (25)
2015-05-18 18:30
337 查看
#include <iostream> #include <string> #include <vector> #include <utility> using namespace std; struct Record { string firstLoca; int NeedFirst; string NextLoca; Record *Next; }; void free(Record *buff) { //if (buff->Next == nullptr) // return; //free(buff->Next); //delete buff; Record *Temp = buff->Next; while (Temp) { delete buff; buff = Temp; Temp = Temp->Next; } } void MyRevese(Record* &ptrFirst, Record* &ptrLast) { if (ptrFirst == nullptr) return; Record* rd = ptrLast->Next; Record* p = ptrFirst->Next; Record* p1 = ptrFirst; while (p != rd) { Record* Temp = p->Next; p->Next = p1; p1 = p; p = Temp; } ptrFirst->Next = p; swap(ptrFirst, ptrLast); } int main() { string first; int nSize; int NeedFirst; cin >> first >> nSize >> NeedFirst; vector<Record> vec(nSize); for (int i = 0; i < nSize; ++i) { string strTemp; int loca; cin >> strTemp; cin >> loca; vec[loca - 1].NeedFirst = loca; vec[loca - 1].firstLoca = strTemp; vec[loca - 1].Next = nullptr; cin >> strTemp; vec[loca - 1].NextLoca = strTemp; } Record *headptr = new Record({ vec[0].firstLoca, vec[0].NeedFirst, vec[0].NextLoca, vec[0].Next }); Record *lastptr = headptr; for (auto begin = vec.begin() + 1; begin != vec.end(); ++begin) { lastptr->Next = new Record({ begin->firstLoca, begin->NeedFirst, begin->NextLoca, begin->Next }); lastptr = lastptr->Next; } Record *Test = headptr; while (--NeedFirst > 0) Test = Test->Next; MyRevese(headptr, Test); Test = headptr; while (nSize-- > 0) { cout << Test->firstLoca << " " << Test->NeedFirst << " " << Test->NextLoca << endl; Test = Test->Next; } free(headptr); return 0; }在vs2013上运行的好好的,可是不知道为什么在pat上说段错误。
相关文章推荐
- 02-线性结构2. Reversing Linked List (25)
- 02-线性结构2. Reversing Linked List (25)
- 数据结构练习 02-线性结构2. Reversing Linked List (25)
- 02-线性结构2. Reversing Linked List (25)
- 02-线性结构3 Reversing Linked List(25 分)
- 02-线性结构3 Reversing Linked List(25 point(s)) 【链表】
- 02-线性结构3 Reversing Linked List(25 分)
- 02-线性结构1. Reversing Linked List (25)
- 02-线性结构1. Reversing Linked List (25)
- 02-线性结构3 Reversing Linked List(25 分)
- PAT 数据结构 02-线性结构1. Reversing Linked List (25)
- 02-线性结构1. Reversing Linked List (25)
- 02-线性结构3 Reversing Linked List(25 分)
- 02-线性结构2 Reversing Linked List
- 02-线性结构3 Reversing Linked List (25分)
- 02-线性结构2 Reversing Linked List
- 02-线性结构2 Reversing Linked List
- [数据结构]02-线性结构3 Reversing Linked List
- 数据结构 PAT 02-线性结构2 Reversing Linked List 单链表实现
- C++ 02-线性结构3 Reversing Linked List