c++中,全局变量head指向输入生成的单向链表的首节点,节点类型为tNode。 编写函数cnt()和add()。函数cnt()计算链表中data域为奇数的节点个数并返回。 函数add(n)的功能:如果链表中节点data域的值均不为n,则插 入一个新节点到链表的尾节点之后,新节点的data域为n。
时间: 2024-03-16 15:41:27 浏览: 41
函数cnt()的实现很简单,只需要遍历链表,对于每个节点,如果data域为奇数,计数器加1。代码如下:
```c++
int cnt() {
int res = 0;
tNode* p = head;
while (p) {
if (p->data % 2 == 1) {
res++;
}
p = p->next;
}
return res;
}
```
函数add(n)的实现也比较简单,需要先遍历一遍链表,检查是否已经存在值为n的节点。如果不存在,则新建一个节点,将其插入到链表的尾部。代码如下:
```c++
void add(int n) {
tNode* p = head;
while (p) {
if (p->data == n) {
return;
}
if (p->next == nullptr) {
break;
}
p = p->next;
}
tNode* newNode = new tNode(n);
if (p) {
p->next = newNode;
} else {
head = newNode;
}
}
```
需要注意的是,如果链表为空,需要特殊处理。此外,函数add()中新建的节点需要手动释放,否则会导致内存泄漏。
阅读全文