Question:有一个带头结点的单链表L,设计一个算法使其元素递增有序
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode * next;
}LNode ,*LinkList;
/*编写算法将使其元素递增*/
LinkList increasing(LinkList &L){
LNode *pre,*p=L->next,*r=p->next; //r保持*p后继结点指针,以保证不断链
p->next=NULL;//构造只含一个数据结点的有序表
p=r;
while(p!=NULL){
r=p->next;//保存*p的后继结点指针
pre=L;
while(pre->next!=NULL&&pre->next->data<p->data){
pre=pre->next;//在有序表中查找插入*p的前驱结点
}
p->next=pre->next;//将*p插入到*pre之后
pre->next=p;
p=r;//扫描原单链表中剩下的结点
}
return L;
}
LinkList createLinkListStern(LinkList &L){
ElemType x,n;
L=(LinkList)malloc(sizeof(LNode));
if(L==NULL){
printf("内存分配失败");
}
L->next=NULL;
printf("输入单链表的长度:");
scanf(&