【发布时间】:2016-10-22 05:29:47
【问题描述】:
我有一个结构:
struct person{
char* name;
char* surname;
int age;
};
我在另一个链表结构中使用这个结构:
struct listNode {
struct person data;
struct listNode *nextPtr;
};
typedef struct listNode ListNode;
typedef ListNode *ListNodePtr;
我正在尝试将一个结构插入到链接列表中。之后,我想通过索引获取这个结构并更改年龄值。主要是,我有这些代码:
int main() {
ListNodePtr startPtr = NULL;
struct person p;
p.age = 22;
p.surname = "Pilkington";
p.name = "Anthony";
insert(&startPtr, p);
printf("Age1:%d\n", p.age);
struct person p2 = getStruct(&startPtr, 0);
p2.age++;
printf("Age2:%d\n", p2.age);
struct person p3 = getStruct(&startPtr, 0);
printf("Age3:%d\n", p3.age);
return 0;
}
现在,我的 insert 函数和 getStruct 函数可以正常工作了。但我不能增加年龄值。我的输出是:
Age1:22
Age2:23
Age3:22
我想让Age3 23。在insert函数中,我已经用malloc分配了内存,但是为什么我不能改变第一个值?如何在不从列表中删除/添加节点的情况下更改此值?
我搜索主题,但找不到我想要的答案。所以,如果你能帮助我,我很感激。
---编辑----- 抱歉没有发布 getStruct 方法,我在下面添加它:
struct person getStruct(ListNodePtr *sPtr, int index) {
ListNodePtr currentPtr;
struct person c;
int counter = 0;
currentPtr = *sPtr;
while (currentPtr != NULL) {
if (counter == index) {
c = currentPtr->data;
}
counter++;
currentPtr = currentPtr->nextPtr;
}
return c;
}
【问题讨论】:
标签: c struct linked-list