【第4周 项目3 - 单链表应用(3)】

问题及代码:

    /* Copyright (c)2015,烟台大学计算机与控制工程学院 All rights reserved. 文件名称:单链表应用(3).cpp 作 者:张耀 完成日期:2015年10月5日 版 本 号:v1.0 问题描述:1、设计一个算法,将一个带头结点的数据域依次为 a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据 域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试 输入描述:若干数据 。 程序输出:链表中的数据及逆序拍好后的数据。 */  

算法库链接

int main()  
{  
    LinkList *A, *B;  
    int i;  
    ElemType a[]= {1, 3, 2, 9};  
    ElemType b[]= {0, 4, 5 ,6, 7, 8};  
    InitList(A);  
    for(i=3; i>=0; i--)  
        ListInsert(A, 1, a[i]);  
    InitList(B);  
    for(i=5; i>=0; i--)  
        ListInsert(B, 1, b[i]);  
    printf("A: %c\n", increase(A)?'Y':'N');  
    printf("B: %c\n", increase(B)?'Y':'N');  
    DestroyList(A);  
    DestroyList(B);  
    return 0;  
}  
bool increase(LinkList *l)  
{  
    LinkList *p;  
    int a;  
    p=l;  
    p=p->next;  
    a=p->data;  
    p=p->next;  
    while(p!=NULL)  
    {  

        if(p->data>=a)  
        {  
            a=p->data;  
        }  
        else return false;  
        p=p->next;  
    }  
    return true;  
} 

运行结果

【第4周 项目3 - 单链表应用(3)】_第1张图片

知识点总结:

链表数据的性质判断。

学习心得:

p=p->next这句话的位置是很有讲究的,位置的不得当会造成程序的崩溃。

你可能感兴趣的:(【第4周 项目3 - 单链表应用(3)】)