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

来源:互联网 发布:淘宝最牛卖家骂人 店名 编辑:程序博客网 时间:2024/05/17 07:09

问题及代码:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /* 
  2.  
  3. copyright (t) 2016,烟台大学计算机学院 
  4.  
  5. *All rights reserved. 
  6.  
  7. *文件名称:1.cpp 
  8.  
  9. *作者:车金阳 
  10.  
  11. *完成日期:2016年10月20日 
  12.  
  13. *版本号:v1.0 
  14.  
  15. *问题描述:判断单链表L是否递增(注:不考虑输入元素有重复的情况,如输入5个节点,1 2 3 3 5) 
  16.  
  17. *输入描述:单链表L长度n 单链表L各节点元素 
  18.  
  19. *程序输出:判断结果 
  20.  
  21. */  

linklist.h:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. typedef int ElemType;  
  2. typedef struct LNode        //定义单链表结点类型  
  3. {  
  4.     ElemType data;  
  5.     struct LNode *next;     //指向后继结点  
  6. } LinkList;  
  7.   
  8. void CreateListR(LinkList *&L,ElemType a[],int n);//尾插法建立单链表  
  9. void DispList(LinkList *L);                       //输出单链表  
  10. int LinkJudgement(LinkList *L);                   //判断单链表L是否是递增的  

linklist.cpp:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #include <stdio.h>  
  2. #include <malloc.h>  
  3. #include "linklist.h"  
  4. void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立单链表  
  5. {  
  6.     LinkList *s,*r;               //头指针*s与增加的尾指针*r  
  7.     int i;  
  8.     L=(LinkList *)malloc(sizeof(LinkList));  
  9.     r=L;  
  10.     for(i=0;i<n;i++)  
  11.     {  
  12.         s=(LinkList *)malloc(sizeof(LinkList));  
  13.         s->data=a[i];  
  14.         r->next=s;  
  15.         r=s;  
  16.     }  
  17.     r->next=NULL;                    //到尾  
  18. }  
  19. void DispList(LinkList *L)  //输出单链表  
  20. {  
  21.     LinkList *p=L->next;  
  22.     while(p!=NULL)  
  23.     {  
  24.         printf("%d ",p->data);  
  25.         p=p->next;  
  26.     }  
  27.     printf("\n");  
  28. }  
  29. int LinkJudgement(LinkList *L)        //判断单链表L是否是递增的  
  30. {  
  31.     LinkList *p=L->next;  
  32.     int flag=1;  
  33.     while(p->next!=NULL)  
  34.     {  
  35.         if(p->data<p->next->data)  
  36.             p=p->next;  
  37.         else  
  38.         {  
  39.             flag=0;  
  40.             break;  
  41.         }  
  42.     }  
  43.     return flag;  
  44. }  

main.cpp:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #include <stdio.h>  
  2. #include <malloc.h>  
  3. #include "linklist.h"  
  4. int main()  
  5. {  
  6.     ElemType a[1000];  
  7.     LinkList *L;  
  8.     int i,n;  
  9.     printf("请输入单链表L长度:\n");  
  10.     scanf("%d",&n);  
  11.     printf("请输入单链表L各节点元素:\n");  
  12.     for(i=0;i<n;i++)  
  13.         scanf("%d",&a[i]);  
  14.     CreateListR(L,a,n);  
  15.     printf("单链表L各节点为:\n");  
  16.     DispList(L);  
  17.   
  18.     if(LinkJudgement(L))  
  19.         printf("该单链表是递增的!\n");  
  20.     else  
  21.         printf("该单链表不是递增的!\n");  
  22.     return 0;  
  23. }  
0 0
原创粉丝点击