递增链表就是其中的元素呈递增排序方式:
#include<stdio.h>
#include<stdlib.h>
typedef struct Node *SNode;
struct Node
{
int data;
SNode next;
};
SNode createhead()//创建头结点
{
SNode head;
head=(SNode)malloc(sizeof(struct Node));
head->next=NULL;
return head;
}
SNode create(SNode head,int a)//创建链表
{
int i,x;
SNode p1=head;
SNode p2=NULL;
for(i=0;i<a;i++)
{
p2=(SNode)malloc(sizeof(struct Node));
scanf("%d",&x);
p2->data=x;
p2->next=NULL;
head->next=p2;
head=p2;//注意
}
return p1;
}
SNode insert(SNode head,int b) //插入元素
{
SNode p1,p2;
p1=head;
p2=(SNode)malloc(sizeof(struct Node));
p2->data=b;
while(head->next!=NULL&&head->next->data<b) //比较大小
{
head=head->next;
}
p2->next=head->next; //插入
head->next=p2;
if(head->next==NULL)
{
head->next=p2;
p2->next=NULL;
}
return p1;
}
int main()
{
int a,b;
SNode p,head,p1,p2;
head=createhead();
printf("请输入结点数和要插入的元素:");
scanf("%d%d",&a,&b);
printf("输入%d个结点的值",a);
p1=create(head,a);
while(p1!=NULL)
{
printf("%2d",p1->data);
p1=p1->next;
}
printf("\n");
p2=insert(head,b);
while(p2!=NULL)
{
printf("%2d",p2->data);
p2=p2->next;
}
return 0;
}