[英]Node Swapping in Linked List
我是C语言的新手。我正在尝试使用链接列表交换两个节点。 不知道出什么问题了。 它给我一个错误的说法
未声明“ temp”。
另外,我可以在此代码中进行哪些更改,以便不仅交换char而且交换int?
struct lnode {
int some_line;
int count;
char* some_word;
struct lnode* next;
};
void swapNodes(struct lnode** head, struct lnode* n1, struct lnode* n2);
int main()
{
struct lnode* head = NULL;
struct lnode* node0 = newCharNode(&head,"this is");
struct lnode* node1 = newCharNode(&head,"programming");
swapNodes(&head,node0,node1);
getchar();
return 0;
}
void swapNodes(struct lnode** head, struct lnode* n1, struct lnode* n2)
{
struct lnode* current = (*head);
struct lnode* temp;
while((current != NULL) && (current->next != NULL))
{
temp->some_word = n1->some_word;
n1->some_word = n2->some_word;
n2->some_word = temp->some_word;
}
printf("%s %s",n1,n2);
current = (current->next)->next;
}
struct lnode* newCharNode(struct lnode** head, char* myword) {
struct lnode* new_node = (struct lnode*) malloc(sizeof(struct lnode));
new_node ->some_word = myword;
new_node ->next = (*head);
(*head) = new_node;
}
在无效swapNodes()
temp->some_word
这里temp只是一个未初始化的指针,您无法进行该分配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.