您的位置:首页 > 其它

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

2013-07-11 19:14 176 查看
1.题目:



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


 

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;
}


 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  单链表
相关文章推荐