/*已知单向链表类linklist的部分代码如下,勿改动。请实现链表遍历函数display(输出链表中所有的数字字符,'0'~'9',其它字符不输出)。主函数的功能是:定义一个类对象A,输入任意个字符,以#结束,利用尾插入法将所有非#字符插入到链表中,并调用display实现链表遍历(只输出所有的数字字符)。
时间: 2024-02-28 21:55:04 浏览: 91
C语言单向链表电话本
下面是实现链表遍历函数display的代码,以及主函数的完整代码:
```cpp
#include <iostream>
using namespace std;
class linklist {
private:
struct node {
char data;
node *next;
node(char d, node *n = NULL) {
data = d;
next = n;
}
} *head;
public:
linklist() {
head = new node('#');
}
~linklist() {
node *p = head;
while (p) {
node *q = p;
p = p->next;
delete q;
}
}
void insert(char d) {
node *p = head;
while (p->next) {
p = p->next;
}
p->next = new node(d);
}
void display() {
node *p = head->next;
while (p) {
if (p->data >= '0' && p->data <= '9') {
cout << p->data;
}
p = p->next;
}
}
};
int main() {
linklist A;
char c;
cin >> c;
while (c != '#') {
if (c >= '0' && c <= '9') {
A.insert(c);
}
cin >> c;
}
A.display();
return 0;
}
```
主函数中利用尾插入法将所有非#字符插入到链表中,然后调用链表遍历函数display实现链表遍历(只输出所有的数字字符)。注意,链表头节点存放的是#字符,不是有效数据,因此在遍历链表时要从头节点的下一个节点开始遍历。
阅读全文