1.题目:
Problem Description
建立单链表,完成遍历操作,并且计算单链表结点长度。
Input
输入数据有多组。每行数字表示单链表的结点(不会超过100),以0结束一个单链表;
例如:1 2 3 4 5 0 代表一个长度为5的单链表。
遇到-1,结束程序。
例如: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
2.代码:
#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; }