单链表的遍历与长度计算(单链表)
2013-07-11 19:14
176 查看
1.题目:
建立单链表,完成遍历操作,并且计算单链表结点长度。
输入数据有多组。每行数字表示单链表的结点(不会超过100),以0结束一个单链表;
例如:1 2 3 4 5 0 代表一个长度为5的单链表。
遇到-1,结束程序。
输出该单链表的长度,并且输出的单链表。
2.代码:
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; }
相关文章推荐
- 计算带头结点单链表的长度 计算单链表的长度,实现单链表的打印
- Java实现单链表的插入、删除、计算链表的长度和输出链表
- 单链表的遍历与长度计算
- 单链表的创建和遍历、求单链表中节点的个数、查找单链表中的中间结点、判断单链表是否有环、取出有环链表中环的长度,删除有序链表中的重复结点
- 合并两个单链表,其中包括尾插法建表、计算单链表长度、输出单链表,给出完整代码
- 计算带头结点单链表的长度 计算单链表的长度,实现单链表的打印
- C语言:【单链表】查找单链表的倒数第k个节点,要求只能遍历一次
- 二维数组的介绍、遍历以及长度的计算
- C语言:【单链表】查找单链表的倒数第k个节点,要求只能遍历一次
- C语言:【单链表】查找单链表的中间节点,要求只能遍历一次
- 单链表的基本操作,正序/逆序建表(尾插法/头插法)、计算单链表长度、输出单链表内容、插入、删除,给出完整代码
- 链表面试题----判断一个单链表是否带环,若带环,求入口点和环的长度
- 完成链表的增删查改以及链表长度的计算
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 判断链表是否带环?若带环求环的长度?若带环求环的入口点?并计算以上每个问题的时间复杂度?
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 单链表在不知道链表长度的前提下求链表中间节点【待补充】
- C/C++ 创建单链表,取链表长度,打印链表
- 从尾到头输出链表、字符串;不声明变量计算字符串长度
- 【面试】3.如何判断链表是否有环?如何计算环的长度?