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

来源:互联网 发布:dna条形码数据库 编辑:程序博客网 时间:2024/05/16 18:39

问题及代码:

/*copyright (t) 2016,烟台大学计算机学院*All rights reserved.*文件名称:1.cpp*作者:常锐*完成日期:2016年9月22日*版本号:v1.0*问题描述:判断单链表L是否递增(注:不考虑输入元素有重复的情况,如输入5个节点,1 2 3 3 5)*输入描述:单链表L长度n 单链表L各节点元素*程序输出:判断结果*/

linklist.h:

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:

#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:

#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;}

运行结果:



知识点总结:

        单链表的应用

心得体会:

        有课本P47例2.7做铺垫,对此问题的分析更加娴熟,能够较快入手。

0 0
原创粉丝点击