1、 int listsize;SqList;status InitList_Sq(SqList *L);status ListInsert_Sq(SqList *L,int i,ElemType e);status ListDelete_Sq(SqList *L,int i);int LocateElem(SqList *L, ElemType e);LinearList.c文件内部代码# include # include LinearList.hstatus InitList_Sq(SqList *L) *L=(SqList*)malloc(sizeof(SqList); (*L).elem
2、=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType); (*L).length=0; (*L).listsize=LIST_INIT_SIZE; return OK;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)*si
3、zeof(ElemType); L-elem=newbase;listsize+=LISTINCREMENT; q=&(L-elemi-1); for (p=L-elem+L-length-1;p=q; p-) *(p+1)=*p; *q=e; L-length+;status ListDelete_Sq(SqList *L,int i) ElemType *q,*p;length) p=&elemi); for (q=L-pp+) *(p-1)=*p;length-;int LocateElem(SqList *L, ElemType e) int i=0; while (i return
4、0; else return i+1;Main.c 文件代码为#include #include void printfElems(SqList *L) int i; for ( i = 0; i printf(n);void main() SqList *list; InitList_Sq(&list);/初始化顺序表 ListInsert_Sq(list,1,10);/ 把10插入第一位置 ListInsert_Sq(list,1,9);/ 把9插入第一位置 ListInsert_Sq(list,1,8);/ 把8插入第一位置 ListInsert_Sq(list,1,7);/ 把7插入第
5、一位置 printfElems(list); /打印出所有元素 ListDelete_Sq(list,1);/删除删除第一个之后n /打印出所有元素第%d个元素是 10,LocateElem(list,10);/查找元素10的位置链表代码为:LinkList.htypedef struct LNode ElemType data; struct LNode *next;LNode,*LinkList;status InitLinkList(LinkList* L);status LinkListInsert(LinkList L,int i,ElemType e);status LinkLis
6、tDelete(LinkList L,int i);int Link_LocateElem(LinkList L,ElemType e);LinkList.cLinkList.hstdlib.hstatus InitLinkList(LinkList* L) *L=(LinkList)malloc(sizeof(LNode); (*L)-next=NULL;status LinkListInsert(LinkList L,int i,ElemType e) LinkList s,p=L; int j=0; while (p&jnext; j+; if (!p|j s=(LinkList)mal
7、loc(sizeof(LNode); s-data=e;next=p- p-next=s;status LinkListDelete(LinkList L,int i) LinkList q, p=L; while (p& q=p-next=q- free(q);int Link_LocateElem(LinkList L,ElemType e) while (L&e!data) L=L- i+;L) return -1; return i;Main.cvoid printfElems_L(LinkList L) L=L- while (L)data); LinkList head; Init
8、LinkList(&head);/初始化链表 LinkListInsert(head,1,10);/第一个位置插入 10 LinkListInsert(head,1,9);/第一个位置 插入 9 LinkListInsert(head,1,8);/第一个位置 插入 8 LinkListInsert(head,1,7);/第一个位置 插入 7 printfElems_L(head); /打印所有的元素 LinkListDelete(head,1);/删除第一个元素/打印所有元素第%d个元素是 10n,Link_LocateElem(head,10);/查找元素10的位置*/六思考讨论题或体会或对
9、改进实验的建议总结实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。七参考资料数据结构习题集(C语言版) 严蔚敏 吴伟民 编著 清华大学出版社C程序设计题解与上机指导(第三版)谭浩强编著清华大学出版社 2013-4-12 实验成绩:实验2 栈与队列3熟悉栈与队列抽象数据类型的表示和实现方法。4掌握栈与队列的基本操作。5进入所选择的IDE环境。6书写程序源代码。7调试程序。8验证程序。1.借助栈实现对表达式中括弧是否配对的判断算法Stack.hint isPiar(char c1,char c2) if (c1=c2=)|(c1=c1=() return 1; return 0; cha
10、r c; char topValue; sqStack *S; InitStack(&S); while (c=getchar()!=10) if (StackEmpty(S) Push(S,c); else GetTop(S,&topValue); if (isPiar(topValue,c) Pop(S,& else Push(S,c); if (StackEmpty(S)格式正确n格式错误n2. 假设循环队列中只设rear和length来表示队尾元素的位置和队中元素的个数,设计并实现这样的队列结构,试给出判断循环队列的队满条件,设计相应的入队和出队算法并编程实现。 Queue.cqueu
11、e.hstatus InitQueue(cycleQueue *q) *q=(cycleQueue*)malloc(sizeof(cycleQueue); (*q)-base=(ElemType*)malloc(sizeof(ElemType)*MAXQSIZE);rear=0;lenght=0;status EnQueue(cycleQueue *q,ElemType e) if (q-lenght=MAXQSIZE)return ERROR; q-baseq-rear=e;rear=(q-rear+1)%MAXQSIZE;lenght+;status DeQueue(cycleQueue
12、*q,ElemType *e)lenght=0)return ERROR; *e=q-base(q-rear-q-lenght+MAXQSIZE)%MAXQSIZE;lenght-; 2013-4-19 实验成绩:实验3 串5理解串的模式匹配算法(包括KMP算法)。6明确串也是特殊的线性表,掌握其特殊性所在。9进入所选择的IDE环境。10书写程序源代码。11调试程序。12验证程序。实验课题:编写函数计算一个子串在主串中出现的次数,如果主串中没有该子串则返回0。(实验数据:自拟)typedef struct char *ch;String;String *makeString(char* ch)
13、 char *c; int i,j; String *str=(String*)(malloc(sizeof(String); for(i=0,c=ch;*c;+i,+c); str-ch=ch;length=i;int countSubString(String *str,String *subStr) int i,j,sum=0; (str-length-subStr-length+1); for ( j = 0; j j+) if (subStr-chj!=str-chj+i)break; if (j=subStr-length)sum+; return sum; String *str
14、=makeString(abcdefababc String *subStr=makeString(abab在abcdefababc出现次数为 %dn,countSubString(str,subStr); 2013-4-26 实验成绩:实验4 数组与广义表7掌握稀疏矩阵的表示方法及其运算的实现。8实现稀疏矩阵在三元组、十字链表等表示下的各运算并分析其效率。13进入所选择的IDE环境。14书写程序源代码。15调试程序。16验证程序。将一个以三元组表存储的稀疏数组以矩阵的形式打印出来 (测试数据自拟)(要求给出算法、 运行结果的屏幕截图,源程序电子打包提交)# define MAXSIZE 25
15、6 ElemType e;Triple; Triple dataMAXSIZE; int r,c,z;TSMatrix;void InitTSMatrix(TSMatrix *T,int r,int c) *T=(TSMatrix*)malloc(sizeof(TSMatrix); (*T)-r=r;c=c;z=0;void InsertMatrix(TSMatrix *T,int i,int j,int v) if (T-z=MAXSIZE)return; T-dataT-z.i=i;z.j=j;z.e=v;z+;void printfMatrix(TSMatrix *T) int i =
16、0; int index; ElemType *arr=(ElemType*)malloc(sizeof(ElemType)*T-r*T-c); for (;c; i+)arri=0;z; index=(T-datai.i-1)*T-c+(T-datai.j-1); arrindex=T-datai.e; for (i=0; if (i%T-c=0)printf(%dt,arri); free(arr); TSMatrix *T; int i,j,r,c,v;请输入矩阵行数和列数n scanf(%d %d,&i,&j); InitTSMatrix(&T,i,j);请输入非零点的个数n%d j;
17、请输入第%d个点 格式为(行号 列号 数值)n,i+1); scanf(%d %d %dr,&c,&v); InsertMatrix(T,r,c,v); printfMatrix(T); 2013-5-10 实验成绩:实验5 二叉树的操作9掌握二叉树的结构特征及存储结构特点。10掌握二叉树的基本运算。17进入所选择的IDE环境。18书写程序源代码。19调试程序。20验证程序。1.以二叉链表为存储结构,建立二叉树,在此基础上实现二叉要的前序遍历、中序遍历、后序遍历和层次遍历。 (测试数据自拟)2.求题1所建立的二叉树的高度 #include data=c; createTree(&(*T)-lchild);rchild);void PreOrderTraverse(BiThrTree T,void(*visit)(TElemType) if (T) visit(T-da
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1