1、 L=(LinkList)malloc(sizeof(LNode); if(!L) return OVERFLOW; L-next=NULL; q=L; printf(输入元素个数和各元素:); scanf(%d,&n); for (i=0;idata); q-next=p; q=p; q- return OK;Status GetElem(LinkList L,int i,ElemType &e) LinkList p; int j; p=L-next;j=1; while(p&j+j; if(!p|ji) return ERROR; e=p-data; return OK;Status L
2、istInsert(LinkList &L,int i,ElemType e) LinkList p,s; printf(输入插入数的位置和值: scanf(%d%di,&e); p=L;j=0;i-1) s=(LinkList)malloc(sizeof(LNode); s-data=e;next=p- p-next=s;Status ListDelete(LinkList &L,int i,ElemType & LinkList p,q;输入要删除元素的位置:i); while(p-next&i-1)(p-next)|ji-1) return ERROR; q=p-next=q- e=q-
3、free(q);Status ClearList(LinkList &L) while (L-next) 该表已被清空!Status LNodeEmpty(LinkList L) if(L-next=NULL) return true; else return false;Status CreateList(LinkList &L, int n) int i; L = (LinkList) malloc (sizeof (LNode); L-next = NULL;输入元素的个数和相应值: for (i = n; i 0; -i) p = (LinkList) malloc (sizeof (
4、LNode); scanf( p-next = L-next = p;Status ListDisp(LinkList L) LinkList p; p=L- while(p!=NULL) %d ,p- p=p- nStatus ListLength(LinkList L) int i=0; i+; return i; int main() LinkList L; ElemType e; int i,choose; InitLNode(L); if(LNodeEmpty(L) printf(表为空. else do printf(选择操作:n1:输出某个元素的值;n2:在某个元素之前插入一个数
5、;n3:删除某个元素;n4:显示链表中的元素及其长度nchoose); switch(choose) case 1:要查找元素的位置 GetElem(L,i,e);第%d个元素的值是%dn,i,e); break; case 2: ListInsert(L,i,e); printf(当前链表中的所有元素为: ListDisp(L); break; case 3: ListInsert(L,i,e);被删除元素的值是%dn,e); ListDisp(L); case 4:链表中的所有元素为:链表的长度为:%dn,ListLength(L); default:操作结束! exit(0); whil
6、e(1); ClearList(L); return;顺序表#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct ElemType *elem; int length; int listsize; SqList;Status InitList( SqList& L ) int i,n; L.elem = (ElemType*) malloc (LIST_INIT_SIZE*sizeof (ElemType); if (!L.elem) return(OVERFLOW); printf(输入元素个数和各元素的值: for
7、(i=0;L.elemi); L.length = n; L.listsize = LIST_INIT_SIZE;void TraverList(SqList L) int i;nThe SqList L:L.length;i+)%dt,L.elemi);Status ListInsert(SqList &L, int i, ElemType e) ElemType *newbase; ElemType *p,*q; if (i L.length+1) return ERROR; if (L.length = L.listsize) newbase = (ElemType *)realloc(
8、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;Status ListDelete(SqList &L, int i, ElemType &e) if(i L.length) return ERROR; p
9、 = & e = *p; q = L.elem+L.length-1; for (+p; p +p) *(p-1) = *p; -L.length;int LocateElem(SqList L, ElemType e) ElemType *p; i = 1; p = L.elem; while (i =S.stacksize) /栈满,追加存储空间 S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT) *sizeof(SElemType);S.base) exit(OVERFLOW); S.top=S.base+S.s
10、tacksize; S.stacksize+=STACKINCREMENT; *S.top+=e; /PUSHStatus Pop(SqStack &S, SElemType &e) /若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR if(S.top=S.base) return ERROR; e=*-S.top; /PopStatus StackEmpty(SqStack S) /若栈不空,返回ERROR,否则返回OK if (S.top=S.base) /StackEmpty int N,e,M; SqStack S; InitStack(S);请入一个数字:M
11、);需要转换为几进制: while(N) Push(S,N % M); N=N/M;printf(其对应的%d进制数是,M);while(!StackEmpty(S) Pop(S,e);递归程序#include1) t=Fibonacci(n-1)+Fibonacci(n-2); return t;汉诺塔void move(char a,int n,char b)将编号为%d的盘从移到%c上n,n,a,b);void hanoi(int n,char x,char y,char z) if(n=1) move(x,1,z); hanoi(n-1,x,z,y); move(x,n,z); han
12、oi(n-1,y,x,z);请输入n的值: hanoi(n,a,bc通过这次实验课程的学习使我对书本上的知识有了更深的了解,更加明白了深层次含义。也明白了书本的重要性以及对基础知识的掌握的重要性的深刻认识。以后的学习生活中我一定汲取这次得到的教训。实事求是,全力以赴。实验三:串的模式匹配算法和二叉树的建立及遍历(1)掌握串的顺序存储表示及模式匹配算法(简单匹配和KMP算法)的实现。(2)掌握利用先序序列建立二叉树的二叉链表的过程。(3)掌握二叉树的先序、中序和后序遍历算法。1.编写程序,对于输入的任意两个串:主串和子串,判断子串在主串中的位置。如:主串为a b a b c a b,子串为abc
13、,找输出其位置为3;若子串为abd,则提示子串在主串中不存在。2.编写程序,实现二叉树的建立,并实现先序、中序和后序遍历。输入先序序列abc#de#,则建立如下图所示的二叉树。并显示其先序序列为:abcde中序序列为:cbaed后序序列为:cbeda【程序代码】实验1#include stdio.h#define MAXSTRLEN 255typedef unsigned char SStringMAXSTRLEN+1;/ 第一个用来存储字符个数int strlength(SString s) /求字符串的长度 i=0; while(si!=0) i+;int Index(SString S,SString T, int pos) int i,j; i= pos,j =1; while (i=S0 & j=T0) if (Si=Tj) j+; else i=i-j+2; /i不变,j后退 j=1;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1