#include<stdlib.h>
#include <stdio.h>
typedef struct LNode{
int data;
struct LNode* next;
}List;
void CreatList(List* &L,int a[],int n)//链表的创建
{
List *p1,*p2;
L=(List*)malloc(sizeof(List));
p1=L;
for(int i=0;i<n;i++)
{
p2=(List*)malloc(sizeof(List));
p2->data=a[i];
p1->next=p2;
p1=p2;
}
p1->next=NULL;
}
void Order(List* &L)//链表的排序
{
List *p;
List *p1;
List *p2;
p2=(List*)malloc(sizeof(List));
for(p=L->next;p!=NULL;p=p->next)
{
for(p1=p->next;p1!=NULL;p1=p1->next)
{
if(p->data>p1->data)
{
p2->data=p1->data;
p1->data=p->data;
p->data=p2->data;
}
}
}
}
void FoundInsert(List* &L,int x)//链表的查找和插入
{
List* p;
List* p1;
List* p2;
p=L->next;
p2=L;
p1=(List*)malloc(sizeof(List));
p1->data=x;
while(p!=NULL&&p->data<x)
{
p2=p2->next;
p=p->next;
}
if(p==NULL)
{
p2->next=p1;
p1->next=NULL;
}
else
{
p1->next=p;
p2->next=p1;
}
}
void DisplayList(List* &L)//链表的遍历
{
List* p;
p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
}
int main()
{
int arry[4];
int num;
printf("请输入四个数据\n");
for(int m=0;m<4;m++)
{
scanf("%d",&arry[m]);
}
List* lianbiao;
CreatList(lianbiao,arry,4);
Order(lianbiao);
printf("请输入需要插入的数据\n");
scanf("%d",&num);
FoundInsert(lianbiao,num);
DisplayList(lianbiao);
return 0;
}
有序单链表的插入并保持单链表的有序性
最新推荐文章于 2023-04-04 15:25:24 发布