9024:單鏈表的遍歷與長度計算
阿新 • • 發佈:2018-11-25
Problem Description
建立非空單鏈表,完成遍歷操作,並且計算單鏈表的長度。
Input
輸入資料有多組,每組資料佔一行:
每行數字表示單鏈表的各個結點值(數字個數不會超過100個),以0結束一個單鏈表的輸入;
例如:1 2 3 4 5 0 代表一個長度為5的單鏈表。
若遇到-1,則結束資料的輸入。
Output
每組輸出佔兩行,第一行輸出單鏈表的長度,第二行輸出該單鏈表,每兩個結點值之間有一空格。
Sample Input
1 3 3 7 9 0 1 3 0 -1
Sample Output
5 1 3 3 7 9 2 1 3
#include <iostream> using namespace std; struct Node { int data; Node* next; }; class LinkList { private: Node* head; public: LinkList(int a[], int n); ~LinkList(); void show(); }; LinkList::LinkList(int a[], int n) { int i; Node* r, *s; head = new Node; r = head; for (i = 0; i < n; i++) { s = new Node; s->data = a[i]; s->next = r->next; r->next = s; r = s; } r->next = NULL; } LinkList::~LinkList() { Node* p, *q; p = head; while (p) { q = p; p = p->next; delete q; } } void LinkList::show() { Node* p; p = head->next; cout << p->data; p = p->next; while (p) { cout << " " << p->data; p = p->next; } cout << endl; } int main() { int i = 0, n = 0, a[100]; while (cin >> a[i]) { if (a[i] == -1) break; else if (a[i] != 0) { i++; n++; } else { cout << n << endl; LinkList k(a, n); k.show(); i = 0; n = 0; } } return 0; }