【发布时间】:2017-11-11 12:41:30
【问题描述】:
我正在努力学习基础知识,谁会想到,指针正在杀死我。我想创建一个基本的链表。为此,我创建了两个结构,一个包含 3 个指针的linkedList,一个用于第一个节点,一个用于当前节点,一个用于最后一个节点。我希望这可以更轻松地插入新节点。 然后我有节点,它们只是一个值和一个指向新节点的指针。
typedef struct linkedList linkedList;
struct linkedList{
struct node* start;
struct node* last;
struct node* current;
};
typedef struct node node;
struct node{
int value;
struct node* next;
};
我用
创建了一个新节点node* newNode(int value){
node* newNode = (node*)malloc(sizeof(node));
newNode->next = NULL;
newNode->value = value;
return newNode
}
现在,我主要创建一个新的链表
linkedList List;
List.start = NULL;
List.current = NULL;
List.last = NULL;
node* node1 = newNode(1);
List.start = node1;
List.current = node1;
List.last = node1;
现在,我如何使用链表访问节点的内容? 如果我这样做,我会如何在 Java 中做到这一点,编译器会说 “错误:在不是结构或联合的东西中请求成员'值'” 如果我尝试
List.start.value = 1;
如果我尝试
(*(List.start)).value = 1;
它编译但给我一个分段错误。 我不确定指针的工作方式,真的。我用谷歌找到的链表都只使用节点,没有要与之交互的主链表。我几乎陷入了学校课程的深渊,所以我对 c 复杂性的了解是有限的。
【问题讨论】:
-
你需要一本书。
-
@Jim Johnson List.start->value = 1;?
-
@Jim Johnson 并显示演示分段错误问题的最小代码。
-
@JimJohnson.: 它不应该......你可以发布完整的代码。(除非你的 malloc 失败)
标签: c pointers struct linked-list