本题实现链表的有序构造,输出表中所有元素。
函数接口定义:
函数接口: ptr creat( );//构造链表 void output(ptr p);//输出链表元素
其中 p
是用户传入的参数。creat函数返回链表的头指针,输入在creat函数中输入,以0表示输入结束。output函数输出链表元素,以一个空格隔开
裁判测试程序样例:
#include <stdio.h>
#include <malloc.h>
typedef struct node { int data; struct node *next; }snode,*ptr; ptr creat( );//构造链表
void output(ptr p);//输出链表元素
int main() { ptr head; head=creat(); output(head); return 0; }
/* 请在这里填写答案 */
输入样例:
2 1 3 0
输出样例:
1 2 3
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
答案区:
ptr creat()
{
snode *head=NULL,*n=NULL;
snode *q;
while(1)
{
n=(snode *)malloc(sizeof(snode));
scanf("%d",&n->data);
if(n->data==0)break;
if(head==NULL) //添加第一个元素
{
head=n;
n->next=NULL;
}
else
{
if(n->data<head->data) //开头
{
n->next=head;
head=n;
}
else
{
for(q=head;;q=q->next)
{
if(q->next!=NULL)
{
if(q->next->data>n->data)
{
n->next=q->next;
q->next=n;
break;
}
}
else
{
q->next=n;
n->next=NULL;
break;
}
}
}
}
}
return head;
}
void output(ptr p)
{
snode *q;
q=p;
while(q!=NULL)
{
printf("%d ",q->data);
q=q->next;
}
return;
}