C语言实现创建有序链表
节点结构
struct node
{
int data;
node *next;
};
插入函数(有序)
node *insert(node *head, node *p) {
node *p1, *p2;
if (head == NULL) {
head = p;
p->next = NULL;
return head;
}
if (head->data >= p->data) {
p->next = head;
head = p;
return head;
}
p1 = head;
p2 = head;
while (p2->next && p2->data < p->data) {
p1 = p2;
p2 = p2->next;
}
if (p2->data < p->data) {
p2->next = p;
p->next = NULL;
} else {
p->next = p2;
p1->next = p;
}
return head;
}
创建有序链表函数
node *create_sort_chain(void)
{
node *p1, *head = NULL;
int a;
printf("产生一条有序链表,输入数据,-1结束。\n");
scanf("%d", &a);
while (a != -1) {
p1 = (node *)malloc(sizeof(node));
p1->data = a;
head = insert(head, p1);
scanf("%d", &a);
}
return head;
}