1、三. 实验前的准备 了解线性表的顺序和链式存储结构。 理解并定义线性表的存储结构,线性表的运算。三 实验要求及实验软硬件环境【基本要求】 理解并定义线性表的存储结构。 掌握线性表的基本操作:【实验组织方式】 个人实验【实验条件】 Windows操作系统四 实验过程及程序清单 1、线性表的基本操作的程序代码:#include stdio.hmalloc.hprocess.hstring.h#define OK 1#define ERROR 0#define LIST_INIT_SIZE 100#define LISTINCREMENT 10#define TRUE 1#define FALSE
2、0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;typedef struct ElemType *elem; int length; int listsize; List;Status InitList(List &L) /构造一个空的线性表。 L.elem=(ElemType * ) malloc(LIST_INIT_SIZE * sizeof(ElemType); L.length = 0; L.listsize=LIST_INIT_SIZE; printf(初始化一个线性表n
3、n); return OK;Status DestroyList(List & if(L.elem) free(L.elem); / 释放分配的存储空间 L.elem=NULL; L.length=0; L.listsize=0;销毁表!nnStatus GetElem (List L, int i, ElemType &e) if(iL.length+1) return ERROR; /i值不合法 e=L.elemi -1; Status ListInsert(List &L,int i,ElemType e) ElemType *q,*p,*newbase; if (i=L.listsiz
4、e)newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType); if (!newbase) return(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; /插入数据Status ListDelete(List &L,int i,ElemType & ElemType *p,*q; if
5、 (iL.length) return ERROR; p=& e= *p; q=(L.elem+L.length-1); for (+p;p+p) *(p-1)=*p; -L.length; / 删除数据void main() List L; ElemType e1,e2; Status k; int i,a,b,c,d,e,n,j; /初始化线性表L InitList(L);初始化表元素个数: scanf(%d,&n); /往线性表插入数据 for(i=1;i=n;i+)输入所插入的数据:a); ListInsert(L,i,a); / 将表L中的第b个元素的值赋给e for(j=1;j2;
6、)请选择您要进行的操作:1 :插入 2:取元素 3:删除 4:销毁nc); if(c=1) printf(请输入插入元素的位置及元素: scanf(%d %dd,&e); ListInsert(L,d,e);线性表元素总数为%dn,n+1); n+; for(i=1; printf(%d n,L.elemi-1); if(c=2)输入要取数的位数:b); if(bL.length)输入错误!n continue ; GetElem(L,b,e1); if(k=ERROR)读取数据失败,b); else第%d个元素的值为%dn,b,e1); /删除元素 if(c=3)输入删除第几个数: if(c
7、L.length)元素不存在n k=ListDelete(L,c,e2); / 删除第c个数据 if(k=ERROR) / 表中不存在第c个数据删除第%d个元素失败n ,c); else / 表中存在第c个数据,删除成功,其值赋给e2删除第%d个元素成功,其值为%dnn,c,e2); /销毁表 if(c=4) j+; DestroyList(L);销毁L后,L.length=%d,L.listsize=%d,L.elem=%unn,L.length, L.listsize, L.elem); 2、链式存储结构的基本操作的程序代码:#include stdlib.htypedef struct
8、student int number; struct student *next; char name10;student;typedef struct student *stud;void CreateList();stud head;void detele();void insertList();void print();void destorylist();void reverse();int main(int argc, char *argv) int c=0; while(c!=-1)tt链式存储结构的基本操作nnt1.创建链表nt2.插入元素nt3.删除单个元素nt4.销毁元素nt
9、5.翻转链表nt-1.退出n请选择操作: switch(c) case 1: CreateList(); break; case 2: insertList(); case 3: detele(); case 4: destorylist(); case 5: reverse(); default: exit(0); break ; system(PAUSE return 0;/*创建链表*/void CreateList() stud pointer; stud New; head=(stud)malloc(sizeof(student); if(head=NULL) Memory malloc failture! exit(-1); pointer=head; int i=0; /循环读入 while(i+number);please input the name:%s,New-name); New-next=NULL; pointer-next=New; pointer=New; print();/*插入链表*/ void insertList() int tag; int pos;请选择插入方式:0.头部 1.尾部 2.中间:pos); if(pos=2)n请选择欲插入的位置:tag);please input the nu
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1