node* create()
{
node *head = nullptr, *p = nullptr, *s = nullptr;
int x, cycle = 1;
head = (node*)malloc(sizeof(node));
if (nullptr != head)
{
p = head;
}
else
{
return head;
}
while (cycle)
{
printf("\nplease input the data:");
scanf("%d", &x);
if (x != 0)
{
s = (node*)malloc(sizeof(node));
s->data = x;
p->next = s;
p = s;
}
else
{
cycle = 0;
}
}
head = head->next;
p->next = NULL;
return head;
}
int length(node *head)
{
int n = 0;
node* p = nullptr;
p = head;
while (p != NULL)
{
p = p->next;
n++;
}
return n;
}
void printf(node* head)
{
node* p = nullptr;
int n = length(head);
printf("\n Now, these %d records are:\n", n);
p = head;
if (head != NULL)
{
while (p != NULL)
{
printf("\n uuu %d ", p->data);
p = p->next;
}
}
}
node* del(node* head, int num)
{
node *p1 = nullptr, *p2 = nullptr;
p1 = head;
while (num != p1->data && p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}
if (num == p1->data)
{
if (p1 == head)
{
head = p1->next;
}
else
{
p2->next = p1->next;
}
free(p1);
}
else
{
printf("\n%d could not benn found.", num);
}
return head;
}
node* insert(node* head, int num)
{
node *p0 = nullptr, *p1 = nullptr, *p2 = nullptr;
p1 = head;
p0 = (node*)malloc(sizeof(node));
p0->data = num;
while (p0->data > p1->data && p1->next != NULL)
{
p2 = p1;
p1 = p1->next;
}
if (p0->data <= p1->data)
{
if (head == p1)
{
p0->next = p1;
head = p0;
}
else
{
p2->next = p0;
p0->next = p1;
}
}
else
{
p1->next = p0;
p0->next = nullptr;
}
return head;
}
node* sort(node* head)
{
node *p = nullptr, *p2 = nullptr, *p3 = nullptr;
int n;
int temp;
n = length(head);
if (head == NULL || head->next == NULL)
return head;
p = head;
for (int j = 1; j < n; ++j)
{
p = head;
for (int i = 0; i < n - j; ++i)
{
if (p->data > p->next->data)
{
temp = p->data;
p->data = p->next->data;
p->next->data = temp;
}
p = p->next;
}
}
return head;
}
node* sort(node* head)
{
node *p1 = nullptr, *p2 = nullptr, *p3 = nullptr;
if (head == NULL || head->next == NULL)
{
return head;
}
p1 = head;
p2 = p1->next;
while (p2)
{
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
head->next = NULL;
head = p1;
return head;
}
编程实现一个单链表及其功能
最新推荐文章于 2023-08-02 09:18:05 发布