c - 用 C 编写程序,创建节点和数据包
问题描述
这是原始程序说明:https ://prnt.sc/rgf0we
这是我到目前为止所做的。有人可以帮我解释为什么所有节点都输出相同数量的创建节点和返回节点吗?我已经为这个程序创建了基础,但由于某种原因,每个节点的输出都是相同的。
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
int created, returned, NotReturned;
struct node *next;
}*node;
void Nodecreated(int createNode);
void CreatePacket(int j);
int main()
{
int createNode, j;
j = 100;
printf("How many node should be made: "); /*askes the user to input how many nodes wants to be created*/
scanf("%d", &createNode);
Nodecreated(createNode);
return 0;
}
/*A function that can create nodes based off of the users input*/
void Nodecreated(int createNode)
{
struct node *next, *newNode,*temp, *fnNode;
int num, i;
/*creates the first node to the linked list*/
newNode = (struct node *)malloc(sizeof(struct node));
for(i = 1; i <= createNode; i++)
{
/*creates a node and gives it an id which is then transverse to the other nodes*/
fnNode = (struct node *)malloc(sizeof(struct node));
fnNode -> data = i;
printf("----------------------\n");
printf("node %d\n", i);
CreatePacket(100);/*A function to create another linked list that will count the packets*/
next = fnNode -> next;
temp = next;
}
}
void CreatePacket(int j)
{
int totalcreated, totalreturned;
struct node node1, node2, node3, node4;
node1.created = 0;
node1.returned = 0;
node2.created = 0;
node2.returned = 0;
node3.created = 0;
node3.returned = 0;
node4.NotReturned = 0;
/*goes through a loop 100 times and whenever i is a multiples of the 3 it will create a packet*/
for(int n = 1; n <= j; n++)
{
if(n % 2 == 0)
{
node1.created = node1.created + 1;
node1.returned = node1.returned + 1;
}
else
{
node4.NotReturned = node4.NotReturned + 1;
}
if(n % 3 == 0)
{
node2.created = node2.created + 2;
node2.returned = node2.returned + 2;
}
else
{
node4.NotReturned = node4.NotReturned + 1;
}
if(n % 5 == 0)
{
node3.created = node3.created + 3;
node3.returned = node3.returned + 3;
}
else
{
node4.NotReturned = node4.NotReturned + 1;
}
}
/*tally up all the packets created and returned as well as the packets that haven't been created and prints it out*/
totalreturned = node1.returned + node2.returned + node3.returned;
totalcreated = node1.created + node2.created + node3.created;
printf("Packets created: %d\n", totalcreated);
printf("Packets returned: %d\n", totalreturned);
printf("Packets left out: %d\n", node4.NotReturned);
printf("----------------------\n");
}
解决方案
推荐阅读
- php - 在 PHP 中执行 Python 程序时遇到问题
- java - 如何在java中传递带有一些附加数据的自定义Throwable
- c# - 相同类的持久列表
- webpack - 如何将动态需求添加为外部?
- excel - VBA 表单仅在填充 3 个文本框后计算
- javascript - 打开一个模式并在页面加载时禁用另一个
- java - 将泛型类型分配给 Class 类型的变量
- vector - 在 WinBUGS 中复制 R 的 prod() 函数
- javascript - 在 IE 11 中按 F12 之前,某些 Javascript 无法正常工作
- react-native - 询问 gps 位置时应用程序崩溃(仅限 android)