c++线性表

来源:百度知道 编辑:UC知道 时间:2024/07/09 01:28:20
已知线性表中元素递增有序排列。并以单链表做存储结构。
编辑一个高效算法,删除所有大于mink小于maxk的元素(若存在),同时释放被删除结点的空间。给出时间复杂度。
注意:程序要完整。

时间复杂度O(n)过程请看函数ListDeleteData()

#include<stdio.h>
#include <stdlib.h>
#include <math.h>

#define ElemType int
#define TRUE 1
#define OK 1
#define FALSE 0
#define ERROR -1

/************************************************************************/
/* 线性表的单链表存储结构*/
/************************************************************************/
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;

/************************************************************************/
/* 操作结果:构造一个空的线性表L */
/************************************************************************/
void InitList(LinkList *L)
{
*L = (LinkList)malloc(sizeof(struct LNode)); /* 产生头结点,并使L指向此头结点 */
if( !*L ) /* 存储分配失败 */
exit(-1);
(*L)->next = NULL; /* 指针域为空 */
}

/******************************