【发布时间】:2018-11-26 07:51:42
【问题描述】:
我正在尝试将元素添加到已排序的链表中。当我尝试添加一个小于现有元素或小于第一个元素的元素时。它开始重复。有人可以帮我解决这个问题吗?
提前致谢
struct node {
int key;
struct node *next;
};
struct node *init() {
struct node *head = 0;
return head;
}
void create(struct node **head, int num) {
struct node *tmp = *head;
struct node *prev = NULL;
struct node *new = calloc(1, sizeof(struct node));
new->key = num;
prev = tmp;
if (*head == NULL)
*head = new;
while (tmp != NULL && tmp->key < num) {
prev = tmp;
tmp = tmp->next;
}
new->next = tmp;
if (prev != NULL)
prev->next = new;
}
int main() {
int op;
int num;
struct node *head;
head = init();
do {
printf("\n Menu \n 1.Insert \n 2.delete element \n 3.display List
\n 4. end program ");
printf("n \n \n please enter an option : ");
scanf("%d", &op);
switch (op) {
case 1:
printf("Enter data:");
scanf("%d", &num);
create(&head, num);
break;
case 2:
printf("Enter data:");
scanf("%d",&num);
delete(&head, num);
break;
case 4:
free(head);
exit(0);
default:
printf("\n enter an option : ");
}
} while(1);
}
这是我得到的:
【问题讨论】:
标签: c linked-list