C链接列表节点未存储

时间:2017-11-04 20:07:30

标签: c linked-list

此代码应该在链接列表之前插入给定的int和给定的int。但是,当我在main中传递参数时,它们不会将值存储在命令insAfter和insBefore中,而只返回0.我猜测它与整数有关,但是当我让用户输入实际值时函数并将其设置为“n”设置为相同的东西并且它起作用。

struct node {
  int data;
  char *item;
  struct node* next;
};

struct node* root = NULL;

void insAfter();
void insBefore();


//Main
void main () {


}



//Command Insert After
void insAfter(int n) {
  struct node* temp;
  temp = (struct node*)malloc(sizeof(struct node));

  n = temp->data;
  temp->next = NULL;

  if(root==NULL) {
    root = temp;
    printf("Text inserted at beginning\n");

  }
  else {
    struct node* p;
    p = root;

    while(p->next != NULL) {
      p = p->next;
    }
    p->next = temp;
      printf("Ok\n");

  }
}

//Command Insert Before
void insBefore(int n) {
  struct node* temp;
  temp = (struct node*)malloc(sizeof(struct node));
  n = temp->data;
  temp->next=NULL;

  if (root == NULL) {
    root = temp;
    printf("Text inserted at beginning\n");
    fflush(stdout);
  }
  else {
    temp->next=root;
    root = temp;
    printf("Ok\n");
    fflush(stdout) ;
  }

}

1 个答案:

答案 0 :(得分:2)

ina()inb()中存在一个小错误。

声明

n = temp->data;

应替换为

temp->data = n;

不是将输入设置为列表,而是覆盖n,而不是修改列表节点的data