Pointers 用C语言实现链表

Pointers 用C语言实现链表,pointers,linked-list,structure,implementation,Pointers,Linked List,Structure,Implementation,问题就在这里 输入4种命令 “添加S C”,意思是将学生S添加到课程C中 “辍学C”是指让学生进入课程C “打印”是指打印出学生所学的所有课程 “打印C”是指打印出所有参加C课程的学生 输入将停止,直到到达文件末尾(EOF) 所以,我决定用一个链表来做这件事 首先,我定义一个结构 typedef struct node { int SID; int CID; struct node* next; }node; 然后,我创建了一个create_节点函数 node* create_no

问题就在这里

输入4种命令

“添加S C”,意思是将学生S添加到课程C中

“辍学C”是指让学生进入课程C

“打印”是指打印出学生所学的所有课程

“打印C”是指打印出所有参加C课程的学生

输入将停止,直到到达文件末尾(EOF)

所以,我决定用一个链表来做这件事

首先,我定义一个结构

typedef struct node
{
  int SID;
  int CID;
  struct node* next;
}node;
然后,我创建了一个create_节点函数

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;
}
并且,我还制作了一个插入节点函数

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;
}
问题出来了。因为输入只有在到达文件末尾时才会停止。这意味着可能会有“添加12”、“添加2、3”。。。。。。。多次出现。 我想知道如何连接两个节点,因为在通常情况下,我会

node* a = create_node(2, 3);
node* b = create_node(7, 7);
insert_node(a, b);

但现在,我不能这样做。谁能给我举个例子吗?非常感谢。

下面是一个“链表”工作原理的示例

这里,函数
insert\u node
将一个节点添加到列表的头部

通常,如果你想让事情更整洁,你可以
typedef
其中一些,例如:

typedef (node *) pnode
typedef (pnode *) linkedlist

也许你没见过,但是…为什么?课堂讲稿教我这样做…蓝色文本是一个链接。原因在于链接指向的答案。也许还有什么东西可以交给你的老师。:)当您将
a
链接到
b
时,您不会设置
b->next=NULL。而是让
b->next
链接到其他节点,这就是“链表”的意思。好的。我删除它。当“添加”发生2次以上时,您知道如何链接到节点吗?我快发疯了,谢谢你。我想这是工作。我要试试。不客气。一开始总是有点困惑,但是一旦你理解了这个原理,你可能会发现很多不同的方法。