交换节点时分配错误的类型不兼容

时间:2014-04-16 23:51:52

标签: c linked-list swap

我试图在链表中交换节点。在交换函数中,虽然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;
     }
}

0 个答案:

没有答案