文档详情

数据结构链表实验报告.doc

发布:2015-09-13约2.51千字共5页下载文档
文本预览下载声明
#include stdio.h #include stdlib.h #define OVERFLOW -2 #define OK 1 #define ERROR 0 typedef struct LNode { int data; //*链表节点的定义*// struct LNode *next; }*LinkList; void createList(LinkList L,int n) { int i; LinkList p,q; L=(LinkList)malloc(sizeof(LNode)); if(!L) exit(OVERFLOW); L-next=NULL; q=L; printf(请输入%d个数据\n,n); for(i=1;i=n;i++) { p=(LinkList)malloc(sizeof(LNode)); scanf(%d,p-data); q-next=p; q=q-next; } p-next=NULL; } void ListTraverse(LinkList L, void(*print)(int)) { LinkList p=L-next; while(p) { print(p-data); p=p-next; } printf(\n); } void print(int e) { printf(%d,e); } int Listlength(LinkList L) { int i=0; LinkList p; p=L-next; //*p指向第一个结点*// while(p) //*注意单循环链表的控制条件*// { i++; p=p-next; } return i; } int GetElem(LinkList L,int i,int e) { int j=1; LinkList p=L-next; while(pji) { j++; p=p-next; } if(!p||ji) return ERROR; e=p-data; return OK; } int ListInsert(LinkList L,int i,int e) { int j=0; LinkList s,p=L; while(pji-1) { j++; p=p-next; } if(!p||ji-1) return ERROR; s=(LinkList)malloc(sizeof(LNode)); s-data=e; s-next=p-next; p-next=s; return OK; } int ListDelete(LinkList L,int i,int e) { int j=0; LinkList q,p=L; while(p-nextji-1) { j++; p=p-next; } if(!p-next||ji-1) return ERROR; q=p-next; p-next=q-next; e=q-data; free(q); return OK; } void DestroyList(LinkList L) { LinkList q; while(L) { q=L-next; free(L); L=q; } } main() { int n,t,length,i,m1,m2,m3; int e1,e2,e3; LinkList L; printf(请输入结点个数n=); scanf(%d,n); printf(请输入t=); scanf(%d,t); createList(L,n); switch(t) { case 1: { printf(输出该线性表:);ListTraverse(L, print);} break; case 2: { length=Listlength(L); printf(输出该线性表长度%d\n,length);} break; case 3:{ printf(请输入要查找的元素位置m1=); scanf(%d,m1);GetElem(L,m1,e1);printf(输出线性表的第%d个元素为%d\n,m1,e1);} break; case 4:{printf(请输
显示全部
相似文档