list.h 代码
/*
*Copyright (c) 2017,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:
*作 者:陈军正
*完成日期:2017年10月10日
*版 本 号:v1.0
*
* 设计一个算法, 判断单链表 L 是否是递增的。 实现这个算法, 并完成测试。
*/
typedef struct LNode
{
int data;
struct LNode *next;
}LinkList;
void CreateList(LinkList *&L,int a[],int n );
void DisplyList(LinkList *&L);
void DestroyList(LinkList *&L);
bool in(LinkList *&L);
main.cpp 代码
#include <iostream>
#include <list.h>
using namespace std;
int main()
{
int a[6] = { 1,2,3,4,5,6 };
LinkList *L;
CreateList(L, a, 6);
if (in(L))
cout << "递增" << endl;
else
cout << "不递增" << endl;
system("pause");
return 0;
}
list.cpp 代码
#include <list.h>
#include <iostream>
#include <malloc.h>
using namespace std;
void CreateList(LinkList *&L,int a[], int n)
{
LinkList *S;
L = (LinkList *)malloc(sizeof(LinkList));
int i;
L->next = NULL;
for (i = 0; i<n; ++i)
{
S = (LinkList *)malloc(sizeof(LinkList));
S->data = a[i];
S->next = L->next;
L->next = S;
}
}
void DisplyList(LinkList *&L)
{
LinkList *p;
p = L->next;
while (p != NULL)
{
cout << p->data << " ";
p = p->next;
}
}
void DestroyList(LinkList *&L)
{
LinkList *p = L, *q=p->next;
while (q != NULL)
{
free(p);
q = p->next;
}
free(p);
}
bool in(LinkList *&L)
{
LinkList *p = L->next, *q;
while (p->next != NULL)
{
q = p->next;
if (q->data > p->data)
{
return false;
}
else
{
p = q;
}
}
return true;
}
运行结果
总结:熟练运用链表的前后两项