向头指针为 L的有序单链表(从小到大有序)中插入一个结点,使插入后链表仍然有序

原题:有一个有序单链表(从小到大有序),表头指针为 L ,编写一个函数向该单链表中插入一个元素为 a 的结点,使插入后链表仍然有序。
说明:以下程序先自动生成一个从小到大有序链表,然后要求输入插入结点的数据,再用函数int InSnode(LinkList &L)来实现插入操作,该函数为实现插入操作的核心。
#include
#include
#include
#include
typedef struct LNode
{
	int data;
	struct LNode *next;
}LNode,*LinkList;

int DisplayList(LinkList L)//输出链表中的数据域的值
{
	if(L == NULL)
	{
		printf("链表为空!\n");
		return -1;
	}
	printf("当前链表的数据为:\n");
	LinkList p=L;
	while(p->next!=NULL)
	{
		printf("%d->",p->data);
		p=p->next;
	}
	printf("%d\n\n",p->data);
	return 1;
}

int Create(LinkList &L)//	生成链表的函数定义
{
	int i;
	LinkList p=NULL,q=NULL;L=NULL;
	for(i=0;i<8;i++)
	{
		p=(LinkList)malloc(sizeof(LNode));
		p->data=13*i+68;//为结点的数据域赋值
		if(L == NULL)
			L=p;
		else
			q->next=p;
		q=p;		
	}

	if(L != NULL)
	{
		q->next=NULL;
	}
	return 1;
}

int InSnode(LinkList L)//插入结点的函数
{
	LinkList s,p,q;int a;
	printf("请输入你要插入

你可能感兴趣的:(剑指offer-算法与数据结构)