此代码应该在链接列表之前插入给定的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) ;
}
}
答案 0 :(得分:2)
ina()
和inb()
中存在一个小错误。
声明
n = temp->data;
应替换为
temp->data = n;
不是将输入设置为列表,而是覆盖n
,而不是修改列表节点的data
。