我试图在链表中交换节点。在交换函数中,虽然name = node3->name;
和name2 = node5->name;
没问题,但编译器会在node3->name = name2;
和node5->name = name;
中出错。错误是分配中的不兼容类型。问题是什么?
这是整个代码
#include <stdio.h>
#include <stdlib.h>
int secim;
struct kuyruk{
char name[80];
struct kuyruk *next;
};
struct kuyruk *node,*firstnode,*firstnode2,*node3,*node5;
int main()
{
firstnode = (struct kuyruk *)malloc(sizeof(struct kuyruk));
node = firstnode;
do{
printf("\n1. push\n2. swap \n3. display\n");
scanf("%d", &secim);
if(secim == 1) push();
if(secim == 2) swap();
if(secim == 3) display();
}while(1);
system("PAUSE");
}
push()
{
printf("type the name: ");
scanf("%s", &node->name);
node->next = (struct kuyruk *)malloc(sizeof(struct kuyruk));
node = node->next;
node->next = NULL;
}
swap()
{
char* name;
char* name2;
node3 = firstnode;
node5 = firstnode;
int x;
for(x=1;x<3;x++) node3 = node3->next;
for(x=1;x<5;x++) node5 = node5->next;
printf("%s and %s changed\n",node3->name, node5->name);
name = node3->name;
name2 = node5->name;
node3->name = name2;
node5->name = name;
}
display()
{
firstnode2 = firstnode;
while(firstnode2->next != NULL)
{
printf("\n%s", firstnode2->name);
firstnode2 = firstnode2-> next;
}
}