您的位置:首页 > 其它

第四周项目3(3)-判断单链表是否递增

2016-10-20 10:38 411 查看
问题及代码:

[cpp] view
plain copy

 





/* 

 

copyright (t) 2016,烟台大学计算机学院 

 

*All rights reserved. 

 

*文件名称:1.cpp 

 

*作者:车金阳 

 

*完成日期:2016年10月20日 

 

*版本号:v1.0 

 

*问题描述:判断单链表L是否递增(注:不考虑输入元素有重复的情况,如输入5个节点,1 2 3 3 5) 

 

*输入描述:单链表L长度n 单链表L各节点元素 

 

*程序输出:判断结果 

 

*/  

linklist.h:

[cpp] view
plain copy

 





typedef int ElemType;  

typedef struct LNode        //定义单链表结点类型  

{  

    ElemType data;  

    struct LNode *next;     //指向后继结点  

} LinkList;  

  

void CreateListR(LinkList *&L,ElemType a[],int n);//尾插法建立单链表  

void DispList(LinkList *L);                       //输出单链表  

int LinkJudgement(LinkList *L);                   //判断单链表L是否是递增的  

linklist.cpp:

[cpp] view
plain copy

 





#include <stdio.h>  

#include <malloc.h>  

#include "linklist.h"  

void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表  

{  

    LinkList *s,*r;               //头指针*s与增加的尾指针*r  

    int i;  

    L=(LinkList *)malloc(sizeof(LinkList));  

    r=L;  

    for(i=0;i<n;i++)  

    {  

        s=(LinkList *)malloc(sizeof(LinkList));  

        s->data=a[i];  

        r->next=s;  

        r=s;  

    }  

    r->next=NULL;                    //到尾  

}  

void DispList(LinkList *L)  //输出单链表  

{  

    LinkList *p=L->next;  

    while(p!=NULL)  

    {  

        printf("%d ",p->data);  

        p=p->next;  

    }  

    printf("\n");  

}  

int LinkJudgement(LinkList *L)        //判断单链表L是否是递增的  

{  

    LinkList *p=L->next;  

    int flag=1;  

    while(p->next!=NULL)  

    {  

        if(p->data<p->next->data)  

            p=p->next;  

        else  

        {  

            flag=0;  

            break;  

        }  

    }  

    return flag;  

}  

main.cpp:

[cpp] view
plain copy

 





#include <stdio.h>  

#include <malloc.h>  

#include "linklist.h"  

int main()  

{  

    ElemType a[1000];  

    LinkList *L;  

    int i,n;  

    printf("请输入单链表L长度:\n");  

    scanf("%d",&n);  

    printf("请输入单链表L各节点元素:\n");  

    for(i=0;i<n;i++)  

        scanf("%d",&a[i]);  

    CreateListR(L,a,n);  

    printf("单链表L各节点为:\n");  

    DispList(L);  

  

    if(LinkJudgement(L))  

        printf("该单链表是递增的!\n");  

    else  

        printf("该单链表不是递增的!\n");  

    return 0;  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: