文档详情

数据结构 线性表的链式表示和实现的基本操作 可运行.doc

发布:2017-11-16约3.89千字共6页下载文档
文本预览下载声明
//头文件Head.h #include stdlib.h//exit #define OVERFLOW -2 #define NULL 0 #define TRUE 1 #define ERROR 0 #define OK 1 #define INFEASIBLE -1 typedef int Status; typedef int ElemType; typedef struct LNode //结点类型 { ElemType data; struct LNode *prior; struct LNode *next; } LNode,*LinkList; Status comp(ElemType c1,ElemType c2) //判定函数(平方关系) { if(c1==c2*c2) return TRUE; else return ERROR; } void visit(ElemType c) //被调用的函数 { printf(%d ,c); } Status InitList(LinkList L) {//初始化 // LinkList L; L=(LinkList)malloc(sizeof(LNode));//生成结点 L-next=NULL; return OK; } Status DestroyList(LinkList L) {//摧毁 while(L-next) {L=L-next; free(L); } return OK; } Status ClearList(LinkList L) {//清空 L-next=NULL; return OK; } Status ListEmpty(LinkList L) {//判空 if(L-next==NULL) return TRUE; return ERROR; } Status ListLength(LinkList L) {//长度 LinkList p; p=L-next; int j=0; while(p) { j++; p=p-next; } return j; } Status GetElem(LinkList L,int i,ElemType e) {//取值 LinkList p; p=L-next; int j=1; while(pji) { p=p-next; j++; } if(!p||ji) return ERROR; return OK; } int LocateElem(LinkList L,ElemType e,Status(*compare)(ElemType,ElemType)) {//返回L中第1个与e满足关系compare()的数据元素的位序 LinkList p; int i=0; //while(i=ListLength(L)!compare(p-data,e)) while(p!compare(p-data,e)) { p=p-next; i++; } if(p)////// return i; return ERROR; } Status PriorElem(LinkList L,ElemType cur_e,ElemType pre_e) {//返回前驱 LinkList p; int i=2; p=L-next; while(pp-data!=cur_e) { i++; p=p-next; } if(!p) return INFEASIBLE; else { pre_e=p-prior-data; return pre_e; } } Status NextElem(LinkList L,ElemType cur_e,ElemType next_e) {//返回后继 LinkList p; p=L; int i=1; while(p-nextp-data!=cur_e) { i++; p=p-next; } if(p==NULL) return INFEASIBLE; else { next_e=p-next-data; return next_e; } } Status ListInsert(LinkList L,ElemType i,ElemType e) {//插入 LinkList p,s; p=L; int j=0; while(pji-1) { p=p-next; ++j; }
显示全部
相似文档