【发布时间】:2016-02-19 14:24:20
【问题描述】:
这就是问题所在。
输入是4种命令,
“ADD S C”表示将学生 S 添加到课程 C 中。
“DROP S C”表示将学生 S 放到课程 C 中。
“PRINTS S”是指打印出学生S所修的所有课程。
“PRINT C”表示打印出所有学生学习的课程C。
输入将停止,直到到达文件末尾(EOF)。
所以,我决定使用链表来做到这一点。
首先,我定义一个结构体
typedef struct node
{
int SID;
int CID;
struct node* next;
}node;
然后,我创建了一个 create_node 函数。
node* create_node(int IDS, int IDC)
{
node* copy = (node*)malloc(sizeof(node));
copy->SID = IDS;
copy->CID = IDC;
copy->next = NULL;
return copy;
}
而且,我还做了一个插入节点功能。
void insert_node(node* a, node* b)
{
a->next = b;
b->next = NULL;
}
问题出来了。因为输入只有在到达文件结束时才会停止。这意味着可能有“ADD 1 2”,“ADD 2, 3”.......出现这么多次。 我想知道如何连接两个节点,因为通常情况下,我会
node* a = create_node(2, 3);
node* b = create_node(7, 7);
insert_node(a, b);
但现在,我不能这样做。谁能给我一个例子?非常感谢。
【问题讨论】:
-
...为什么?讲义教我这样做...
-
那个蓝色文字是一个链接。原因在于链接指向的答案。也许也可以交给你的老师。 :)
-
当您将
a链接到b时,您不会设置b -> next = NULL;。相反,你让b -> next链接到其他节点,这就是“链表”的意思。 -
好的。我删除它。当“添加”发生超过 2 次时,您知道如何链接到节点吗?它让我发疯。
标签: pointers linked-list structure implementation