1、五、总结与体会(调试程序的心得与体会,若实验课上未完成调试,要认真找出错误并分析原因等。)调试程序时,出现了许多错误。如:结构体类型指针出错,忽略了释放存储空间,对头插法建表、尾插法建表不熟悉等。另外还有一些语法上的错误。由于对所学知识点概念模糊,试验课上未能完成此次上机作业。后来经过查阅教材,浏览网页等方式,才完成试验。这次试验出现错误最重要的原因就是对课本知识点理解不深刻以及编写代码时的粗心。以后要都去练习、实践,以完善自己的不足。六、程序清单(包含注释)/单链表#includemalloc.h#define OK 1#define ERROR 0typedef char ElemType
2、;typedef int Status;/线性表的单链表的存储结构typedef struct LNode ElemType data; struct LNode *next;LNode,*LinkList;/LinkList为结构体类型的指针,可以直接定义变量,比如LinkList p;/建表(头插法)void CreatListF(LinkList &L,ElemType a,int n) /初始化线性表 L=(LinkList)malloc(sizeof(LNode);/分配内存空间 L-next=NULL; /在表中插入元素 LinkList S; int i; /头插法 for(i=
3、0;idata=ai;/数据域next=L-next; L-next=S; /建表(尾插法)void CreatListR(LinkList & LinkList p; p=L; /尾插法 p- p=S; p-/初始化线性表void InitList(LinkList &L)/获得链表元素Status GetElem(LinkList L,int i,ElemType &e) /L为带头结点的单链表的头指针 int j; /初始化,p指向第一个结点 p=L- /j为计数器 j=1; /顺指针往后查找,直到p指向第i个元素或p为空 while(p & j j+; /第i个元素不存在 if(!p
4、| j return ERROR; /取第i个元素 e=p-data; return OK;/插入Status ListInsert(LinkList &L,int i,ElemType e) int j=0; while(p!=NULL &i-1)/找第i-1个结点i-1) S=(LinkList)malloc(sizeof(LNode); S-data=e;next=p-/删除Status ListDelete(LinkList &L,int i,ElemType & LinkList q; while(p-next)!i-1)/找第i个结点 /!(p-next) :指向第i个结点的指针为
5、空(第i个元素不存在) next) | j q=p-next=q- e=q- free(q);/求表的长度int ListLength(LinkList L) /线性链表最后一个结点的指针为空=NULL) return j;/输出void visit(LinkList L) printf(%c ,p-data);/销毁:要销毁的话从头结点开始依次free 但要先得到下一个节点再freevoid DestroyList(LinkList & free(p); p=q; q=p-/ free(p);/判空int ListEmpty(LinkList L) /为空表则执行该语句,否则返回return
6、 0; return (L-next=NULL);/查找int ListSearch(LinkList L,ElemType e) int i=1;data!=e) i+; if(p=NULL) return 0; return i;int main() ElemType e; ElemType a6=a,bcdef; LinkList L;/链表的头指针 printf(头插法建表:); CreatListF(L,a,6); visit(L);nn /初始化 InitList(L);初始化后的表:尾插法建表: CreatListR(L,a,6); /初始化后表为空,此时不要调用GetElem() GetElem(L,3,e);表中第3个元素为:%cnn,e); /在第5个位置插入字符k ListInsert(L,5,在表中第5个位置插入字符后:表的长度为:%dnn,ListLength(L); int z; z=ListSearch(L,d是第%d个元素nn,z); ListDelete(L,2,e);删除第2个元素: /销毁/ DestroyList(L); return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1