给一个单链表内插一个值,输入12后,无法打印所所有结果解决方法
给一个单链表内插一个值,输入12后,无法打印所所有结果
好,
给一个单链表内插一个值,输入12后,无法打印所所有结果。
小白一个。看了一个课本,里面的东西和我写的差不了太多,不知为何不能通过。求大侠解救。
#include<stdio.h>
#include<stdlib.h>
typedef struct NODE {
struct NODE *link;
int value;
}Node;
int
sll_insert(Node *current,int new_value)
{
Node *previous;
Node *new;
while(current->value<new_value){
previous=current;
current=current->link;
}
new=(Node *)malloc(sizeof(Node));
if (new==NULL) return 0;
new->link=current;
previous->link=&new;
}
main()
{
Node *p,*gc;
int new_value;
Node x={0,5};
Node y={0,10};
Node z={0,15};
x.link=&y;
y.link=&z;
p=&x;
gc=p;
int t=0;
while(t==0){
printf("%d\n",gc->value);
gc=gc->link;
if (gc->link==NULL) {t=1;printf("%d\n",gc->value);}
};
printf("请输入要插入的新值:");
scanf("%d",&new_value);
int sll_insert(Node *current,int new_value);
sll_insert(p,new_value);
t=0;
gc=&x;
while(t==0){
printf("%d\n",gc->value);
gc=gc->link;
if (gc->link==NULL) {t=1;printf("%d\n",gc->value);}
}
}
------解决方案--------------------
链表插入改成这样。
好,
给一个单链表内插一个值,输入12后,无法打印所所有结果。
小白一个。看了一个课本,里面的东西和我写的差不了太多,不知为何不能通过。求大侠解救。
#include<stdio.h>
#include<stdlib.h>
typedef struct NODE {
struct NODE *link;
int value;
}Node;
int
sll_insert(Node *current,int new_value)
{
Node *previous;
Node *new;
while(current->value<new_value){
previous=current;
current=current->link;
}
new=(Node *)malloc(sizeof(Node));
if (new==NULL) return 0;
new->link=current;
previous->link=&new;
}
main()
{
Node *p,*gc;
int new_value;
Node x={0,5};
Node y={0,10};
Node z={0,15};
x.link=&y;
y.link=&z;
p=&x;
gc=p;
int t=0;
while(t==0){
printf("%d\n",gc->value);
gc=gc->link;
if (gc->link==NULL) {t=1;printf("%d\n",gc->value);}
};
printf("请输入要插入的新值:");
scanf("%d",&new_value);
int sll_insert(Node *current,int new_value);
sll_insert(p,new_value);
t=0;
gc=&x;
while(t==0){
printf("%d\n",gc->value);
gc=gc->link;
if (gc->link==NULL) {t=1;printf("%d\n",gc->value);}
}
}
------解决方案--------------------
链表插入改成这样。
int sll_insert(Node *current, int new_value)
{
Node *previous;
Node *new;
while(current->value < new_value)
{
previous = current;
current = current->link;
}
new = (Node *)malloc(sizeof(Node));
if (new == NULL) return 0;
new->link = current;
new->value = new_value;
previous->link = new;
}