请完成函数cnt()、add()。 单向链表已经生成,全局变量head指向链表的首节点,节点类型为tNode。 1)函数cnt()计算链表中节点data域为奇数的数据个数并返回。 2)函数add(n)的功能:如果链表中节点data域的值均不为n,则插入一个新节点到链表的尾节点之后,新节点的data域为n。 样例输入: 7 样例输出: 3 7/*-------------------------------------------------- 注意:部分源程序给出如下。请勿改动主函数main和其它 函数中的任何内容,不要修改或删除"program"和 "End"两行注释,仅在其中填入所编写的代码。 --------------------------------------------------*/ #include <iostream> using namespace std; struct tNode { int data; tNode *next; }; tNode *head; void createLink(int a[], int n); int cnt(); void add(int n); /**********Program**********/ /********** End **********/ void createLink(int a[], int n) { tNode *node; head = NULL; for(int i=n-1; i>=0; i--) { node = new tNode; node->data = a[i]; node->next = NULL; node->next = head; head = node; } } int last() { tNode *p=head; int n; while(p) { n = p->data; p = p->next; } return n; } int main() { int a[]={1,2,3,4,5}; createLink(a, 5); cout<<cnt()<<" "; // 链表中有5个节点,3个奇数 int m ; cin>>m; add(m); cout<<last()<<endl; // 最后一个节点的值应该是7 return 0; }
时间: 2023-08-10 20:02:31 浏览: 115
#include <iostream>
using namespace std;
struct tNode
{
int data;
tNode *next;
};
tNode *head;
void createLink(int a[], int n);
int cnt();
void add(int n);
int cnt()
{
int count = 0;
tNode *p = head;
while (p)
{
if (p->data % 2 != 0)
{
count++;
}
p = p->next;
}
return count;
}
void add(int n)
{
tNode *p = head;
while (p->next)
{
p = p->next;
}
tNode *newNode = new tNode;
newNode->data = n;
newNode->next = NULL;
p->next = newNode;
}
void createLink(int a[], int n)
{
tNode *node;
head = NULL;
for (int i = n - 1; i >= 0; i--)
{
node = new tNode;
node->data = a[i];
node->next = NULL;
node->next = head;
head = node;
}
}
int last()
{
tNode *p = head;
int n;
while (p)
{
n = p->data;
p = p->next;
}
return n;
}
int main()
{
int a[] = {1, 2, 3, 4, 5};
createLink(a, 5);
cout << cnt() << " "; // 链表中有5个节点,3个奇数
int m;
cin >> m;
add(m);
cout << last() << endl; // 最后一个节点的值应该是7
return 0;
}
阅读全文