求c语言大佬!帮忙看一下感激不尽!
递增链表的插入:建一个带头结点的空链表,然后输入整数,将给整数存入到链表中,要求链表始终保持递增有序的状态。当输入为-1的时候结束输入,输出整个链表序列。...
递增链表的插入:建一个带头结点的空链表,然后输入整数,将给整数存入到链表中,要求链表始终保持递增有序的状态。当输入为-1的时候结束输入,输出整个链表序列。
展开
展开全部
如图,我是在我原有自编链表程序里加的,所以提取出来要一段时间,先上效果图
如图,如有疑问或不明白请追问哦!
源代码如下(仅在网页端可见),要用C++!!!! C语言有错!
#include<stdio.h>
#include<malloc.h>
typedef int ElemType;
typedef struct LNode //单链表节点
{
ElemType data; //数据域
struct LNode *next; //指针域
}LNode , *LinkList;
void PrintLinkList(LinkList &L,char *str) //遍历打印单链表数据(含头节点)
{
LNode *s=L->next;
for(;s!=NULL;s=s->next) //下一节点不为空
printf(str,s->data);
printf("\n");
}
LinkList addIncLink(LinkList head,ElemType x){ //插入元素到值递增的链表,自动保持链表有序,head为头结点(头结点不参与排序),返回新节点指针(失败返回NULL)
LinkList pre=head,p,newNode; //head是头结点,其data无效
for(p=pre->next; p && x>= p->data ;){ //p后移直到 x< p->data
pre=p; //记录前驱节点方便插入
p=p->next; //p后移
}
newNode= (LinkList) malloc(sizeof(LNode)); //创建新结点
if(newNode){
newNode->data= x;
newNode->next=p; //新节点在p之前
pre->next =newNode; //新节点在pre之后
}
return newNode;
}
int main(void)
{
int i;
LinkList MyList=(LinkList) malloc(sizeof(LNode)) ,L; //创建头结点,L;
ElemType arr[]={1,3,5,6,8,7,9,12,6,4,11};
MyList->next=NULL;
PrintLinkList(MyList,"%d "); //遍历打印单链表数据(含头节点)
for(i=0; i<sizeof(arr)/sizeof(ElemType) ;i++){
L= addIncLink(MyList, arr[i]); //添加元素到递增有序链表
}
PrintLinkList(MyList,"%d "); //遍历打印单链表数据(含头节点)
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询