我有一个算法,应该从教科书中创建一个单链表。它几乎没有涉及任何例子,所以我需要一些帮助来弄清楚它(对C来说仍然是新的)
基本上,算法运行如下:
Algorithm: CREATE (HEAD, ITEM)
1. [Create NEW node]
a) Allocate memory for NEW node.
b) IF NEW = NULL then Print: “Memory not Available” and Return
c) Set NEW→DATA = ITEM
d) Set NEW→LINK = NULL
2. [Whether List is empty, head is the content of HEADER]
If HEAD = NULL then Set HEAD = NEW
3. Else
a) Set Temp = HEAD
b) While Temp→LINK ≠ NULL do
Set Temp = Temp→LINK
[End of while]
c) Set Temp→LINK = NEW
[End of IF]
4. Return
下面是我目前为止尝试的方法,但是我无法理解算法中的箭头Map。这些是现有的C
特性吗?
#include <stdlib.h>
#include <stdio.h>
typedef struct node {
int DATA;
struct node * LINK;
} node_t;
node_t *create(int head, int item){
node_t* new = NULL;
new = (node_t *)malloc(5*sizeof(node_t));
if(new == NULL){
prtinf("Memory not available");
return -1;
}
}
1条答案
按热度按时间yacmzcpb1#
箭头运算符(
->
)用于使用指向结构的指针访问该结构的成员。它等效于使用点运算符(.)来存取结构的成员,但增加了取消指涉结构指标的步骤。例如,如果p
是struct node
的指标,那么p->DATA
等于(*p).DATA
。在您的代码中,您使用
node_t
typedef定义struct node
类型。这意味着您可以使用node_t *
引用指向struct node
的指针,并且可以使用node_t->DATA
访问由node_t
指向的struct node
的DATA
成员。看起来您正在尝试实现算法的第一步,即为新节点分配内存并将
ITEM
值存储在节点的DATA
成员中。您正在使用malloc
为新节点分配内存,但是您需要初始化节点的DATA
成员和LINK
成员。您可以通过使用箭头操作符访问节点的成员来完成此操作:您还需要从
create
函数返回新节点,以便稍后在算法中使用它。然后,你可以使用
create
函数创建一个新节点,并将其存储在主程序的一个局部变量中,这样你就可以继续实现算法的其余部分。