直接上代码:
#include<stdio.h>
typedef struct ll{
int data;
struct ll *next;
}node;
node *creat()
{
node *head,*p,*s;
int x,cycle = 1;
head = (node *)malloc(sizeof(node));
p = head;
printf("input data:\r\n");
while(cycle)
{
scanf("%d",&x);
if(x){
//p->next = s;
s = (node *)malloc(sizeof(node));
p->next = s; //要先申请内存,再把它赋值给别人
s->data = x;
p=s;}
else
{
cycle = 0;
}
}
head = head->next;
p->next = NULL;
return head;
}
int counting(node* head)
{
node *p;
int n=0;
p = head;
while(p!=NULL)
{
p = p->next;
n++;
}
return n;
}
void print(node* head)
{
node *p;
p=head;
printf("the node data:\r\n");
while(p!=NULL){
printf("%d ",p->data);
p = p->next;
}
}
//删除链表中的num
node *del(node *head,int num)
{
node *p1,*p2;
p2 = head;
p1 = p2->next;
while(p1->data!=num && p1->next!=NULL)
{
p2 = p1;
p1 = p1->next;
}
if(p1->data == num)
{
p2->next = p1->next;
free(p1);
}
return head;
}
node *insert(node *head,int num)
{
node *p0,*p1,*p2;
p0 = (node *)malloc(sizeof(node));
p0->data = num;
p2 =head;
p1 = p2->next;
while(p1->data<num&&p1->next!=NULL)
{
p2 = p1;
p1 = p1->next;
}
if(p1->data>num&&p2->data<num)
{
p2->next = p0;
p0->next = p1;
}
return head;
}
void *sort(node *head)
{
int i,n,j=0;
node *p;
n = counting(head);
printf("n : %d\r\n",n);
for(int l = 1;l<n;l++){
p = head;
for(i=0;i<n-l;i++)
{
if(p->data>p->next->data)
{
int temp = p->data;
p->data = p->next->data;
p->next->data = temp;
}
p = p->next;
}
}
return head;
}
void main()
{
node *p;
int n;
p = creat();
print(p);
// counting(p);
// printf("input the number to delete\r\n");
// scanf("%d",&n);
// p = del(p,n);
// print(p);
// printf("input the number to add\r\n");
// scanf("%d",&n);
// p = insert(p,n);
// print(p);
printf("sort\r\n");
p = sort(p);
print(p);
}