题目描述
建立一个升序链表并遍历输出。
输入描述:
输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。
输出描述:
可能有多组测试数据,对于每组数据,
将n个整数建立升序链表,之后遍历链表并输出。
示例1
输入
4
3 5 7 9
输出
3 5 7 9
总结
这道题是要根据输入的整数建立一个升序链表,输入的时候并不是排好序的,要边建立链表边排序
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data;
struct node *next;
}*LinkList,LNode;
void insert(LinkList head,int num);
void trans(LinkList head);
int main(){
LinkList head;
int n,num;
head=(LinkList)malloc(sizeof(LNode));
head->next=NULL;
scanf("%d",&n);
while(n--){
scanf("%d",&num);
insert(head,num);
}
trans(head);
return 0;
}
//边输入边排序
void insert(LinkList head,int num){
LinkList pre,p,q;
pre=head;
p=pre->next;
while(p){
if(p->data<num){ //如果值大,则指针后移
pre=p;
p=p->next;
}
else
break; //找到插入位置,跳出
}
//考虑到链表为空的时候的情况,直接插入在后面
q=(LinkList)malloc(sizeof(LNode));
q->data=num;
pre->next=q;
q->next=p;
}
//遍历
void trans(LinkList head){
LinkList p;
p=head->next;
while(p){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}