单链表的遍历与长度计算(单链表)

来源:互联网 发布:数据分析挖掘与r语言 编辑:程序博客网 时间:2024/05/16 09:08

1.题目:

Problem Description

建立单链表,完成遍历操作,并且计算单链表结点长度。

 

Input

输入数据有多组。每行数字表示单链表的结点(不会超过100),以0结束一个单链表;
例如:1 2 3 4 5 0 代表一个长度为5的单链表。
遇到-1,结束程序。
 

Output

输出该单链表的长度,并且输出的单链表。
 

Sample Input

1 3 3 7 9 01 3 0-1

 

Sample Output

51 3 3 7 921 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;}