数据结构线性链表源程序.doc_第1页
数据结构线性链表源程序.doc_第2页
数据结构线性链表源程序.doc_第3页
数据结构线性链表源程序.doc_第4页
数据结构线性链表源程序.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/数据结构示例程序(顺序表的各种操作) /-文件包含-#include #include #include /-预定义常量和类型(教材第10页)-#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;/-第2-顺序表结构定义(教材2页)-#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef int ElemType; /在本示例程序中,顺序表元素为整型 typedef struct ElemType *elem; int length; int listsize;SqList;/-顺序表基本操作-/构造一个空的顺序表L(教材第23页算法2.3) Status InitList_Sq(SqList &L) L.elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType); if (!L.elem) exit(OVERFLOW); L.length=0; L.listsize=LIST_INIT_SIZE; return OK;/销毁顺序表L Status DestroyList_Sq(SqList &L) if (L.elem) free(L.elem); L.length=0; L.listsize=0; return OK;/将L重置为空顺序表 Status ClearList_Sq(SqList &L) L.length=0; return OK;/判断L是否为空顺序表。若为空顺序表,返回TRUE,否则返回FALSE。 Status ListEmpty_Sq(SqList L) if (L.length=0) return TRUE; else return FALSE;/求顺序表L的长度 int ListLength_Sq(SqList L) return L.length;/用e返回顺序表L中第i个数据元素的值 Status GetElem_Sq(SqList L,int i,ElemType &e) if (iL.length) return ERROR; e=L.elemi-1; return OK; /返回顺序表L中第1个和e相等的数据元素的位序。若这样的数据元素不存在,则返回值为0。 int LocateElem_Sq(SqList L,ElemType e) int i; i=0; while (iL.length & L.elemi!=e) i+; if (iL.length) return i+1; else cout1) pre_e=L.elemi-2; return OK; else cout0 & iL.length) next_e=L.elemi; return OK; else cout顺序表为空或数据元素cur_e不在顺序表中或数据元素cur_e在顺序表中是最后一个数据元素!; return ERROR; /在顺序表L中第i个位置之前插入新的元素e(教材第24页算法2.4) Status ListInsert_Sq(SqList &L,int i,ElemType e) ElemType *newbase,*p,*q; if (iL.length+1) return ERROR; if (L.length=L.listsize) newbase=(ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType); if (!newbase) exit(OVERFLOW); L.elem=newbase; L.listsize+=LISTINCREMENT; q=&(L.elemi-1); for (p=&(L.elemL.length-1);p=q;-p) *(p+1)=*p; *q=e; +L.length; return OK;/在顺序表L中删除第i个元素,并用e返回其值(教材第24-25页算法2.5) Status ListDelete_Sq(SqList &L,int i,ElemType &e) ElemType *p,*q; if (iL.length) return ERROR; p=&(L.elemi-1); e=*p; q=L.elem+L.length-1; for (+p;p0) for (i=1;i=L.length;i+) coutL.elemi-1,; return OK; else cout顺序表为空!; return ERROR; /-主函数-int main() SqList L; /定义顺序表L ElemType e,e1,e2; int i; InitList_Sq(L); /构造一个空的顺序表L for (i=1;i=5;i+) ListInsert_Sq(L,i,i); ListTraverse(L); coutendl; ListDelete_Sq(L,2,e); ListTraverse(L); coutendl; coutLength=ListLength_Sq(L)endl; GetElem_Sq(L,3,e); coute=eendl; coutThe position of 5 is LocateElem_Sq(L,5)endl; PriorElem_Sq(L,4,e1); coutThe prior elem of 4 is e1endl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论