原题:编程判断带表头的单向循环链表La是否递增。
分析:判断链表是否递增由函数IsIncrease()实现,其算法思想:令p指向链表的第一个结点,即指向头结点的后继,如果p所指结点的值比其后继结点的值小,则p前进;如果最终p->next==L(注意此表是单循环链表),则说明表中任意两相临结点中,前一结点的值总小于后一结点的值,即链表是递增的。
#include<stdio.h>
#include<malloc.h>
#include<time.h>
#include<stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
int InitList1(LinkList &La)//随机生成链表,链表很可能无序
{
LinkList p,q;
La=(LinkList)malloc(sizeof(LNode));
La->data=-1;La->next=NULL;q=La;//q永远指向La的表尾
srand((unsigned)time(NULL));
for(int k=0;k<2;k++)
{
p=(LinkList)malloc(sizeof(LNode));
p->data=rand()%100*16+1;