#include<stdio.h>
#include<malloc.h>
typedef struct lnode{
int data;
struct lnode *next;
}lnode,*linklist;
lnode* create(int a[]) //用的是头插法,所以和传入是逆序的关系
{
linklist head;
head=(lnode*)malloc(sizeof(lnode));
head->next=NULL;
lnode *p;
for(int i=1;i<=6;i++){
p=(lnode*)malloc(sizeof(lnode));
p->data=a[i];
p->next=head->next;
head->next=p;
}
return head;
}
void judgeorder(linklist head){
lnode *p=head->next,*q;
q=p->next;
int down=0,up=0;//up和down作为升降逆序出现的标志
if(p!=NULL){
while(q!=NULL){
if(p->data>=q->data){down++;}//开始时以 降序为正序,若出现升序 up++即在降序中出现逆序
else{up++;}
p=q;
q=q->next;
}
}
if(up!=0&&down!=0){ //升降序均出现即无序
printf("wuxu!\n");
}
else if(down==0){ //并未出现降序即升序
printf("shengxu;!\n");
}
else{printf("jiangxu!\n");} //并未出现升序即降序
}
void main(){
int a[7]={0,1,2,8,4,5,6};
int b[7]={0,1,2,3,4,5,6};
int c[7]={10,9,7,6,5,3,1};
lnode *p=create(a);
judgeorder(p);
p=p->next;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
lnode *sd=create(b);
judgeorder(sd);
sd=sd->next;
while(sd!=NULL){
printf("%d ",sd->data);
sd=sd->next;
}
printf("\n");
lnode *sq=create(c);
judgeorder(sq);
sq=sq->next;
while(sq!=NULL){
printf("%d ",sq->data);
sq=sq->next;
}
}
运行结果示意:
文章主要是分享judgeorder 部分的代码,欢迎大家留言,纠正不足之处,谢谢!