求c语言大佬!帮忙看一下感激不尽!

递增链表的插入:建一个带头结点的空链表,然后输入整数,将给整数存入到链表中,要求链表始终保持递增有序的状态。当输入为-1的时候结束输入,输出整个链表序列。... 递增链表的插入:建一个带头结点的空链表,然后输入整数,将给整数存入到链表中,要求链表始终保持递增有序的状态。当输入为-1的时候结束输入,输出整个链表序列。 展开
 我来答
弈轩
2018-03-23 · 知道合伙人教育行家
弈轩
知道合伙人教育行家
采纳数:1029 获赞数:7542
电子设计大赛三等奖 优秀毕业生

向TA提问 私信TA
展开全部

如图,我是在我原有自编链表程序里加的,所以提取出来要一段时间,先上效果图

如图,如有疑问或不明白请追问哦!

源代码如下(仅在网页端可见),要用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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式