数据结构复习资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、函数实现单链表得插入算法。
int ListInsert(LinkList L,int i,ElemType e){ LNode *p,*s;int j;
p=L;j=0;
while((p!=NULL)&&(j p=p->next;j++; } if(p==NULL||j>i-1) return ERROR; s=(LNode *)malloc(sizeof(LNode)); s->data=e; s->next=p->next )p->next=s return OK; }/*ListInsert*/ 2、函数ListDelete_sq实现顺序表删除算法。 int ListDelete_sq(Sqlist *L,int i){ int k; if(i<1||i>L->length) return ERROR; for(k=i-1;k L->slist[k]=L->slist[k+1] --L->Length return OK; } 3、函数实现单链表得删除算法。 int ListDelete(LinkList L,int i,ElemType *s){ LNode *p,*q; int j; p=L;j=0; while(( p->next!=NULL )&&(j p=p->next;j++; } if(p->next==NULL||j>i-1) return ERROR; q=p->next; p->next=q->next ; *s=q->data; free(q); return OK; }/*listDelete*/ 4、栈得基本操作函数: int InitStack(SqStack *S); //构造空栈 int StackEmpty(SqStack *S);//判断栈空 int Push(SqStack *S,ElemType e);//入栈 int Pop(SqStack *S,ElemType *e);//出栈 函数conversion实现十进制数转换为八进制数,请将函数补充完整。 void conversion(){ InitStack(S); scanf(“%d”,&N); while(N){ Push(S,N%8) ; N=N/8; } while( !StackEmpty(S) ){ Pop(S,&e); printf(“%d”,e); } }//conversion 5、函数实现串得模式匹配算法。 int index_bf(sqstring*s,sqstring *t,int start){ int i=start-1,j=0; while(i if(s->data[i]==t->data[j]){ i++;j++; }else{ i= i-j+1 ;j=0; } if(j>=t->len) return i-t->len+1 ; else return -1; }}/*listDelete*/ 6、二叉树后序遍历递归算法 void function(Bitree *t){ if(p!=NULL){ function(p->lchild); function(p->rchild); printf(“%d”,p->data); } } 7、编写求一棵二叉树中结点总数得算法。 答案: (以先序遍历得方法为例) void count_preorder(Bitree *t, int *n) { if(t!=NULL) {*n++; count_preorder(t->lchild); count_preorder(t->lchild); } } 8、函数InOrderTraverse(Bitree bt)实现二叉树得中序遍历。 void InOrderTraverse(BiTree bt){ if( bt!=NULL ){ InOrderTraverse(bt->lchild); printf(“%c”,bt->data); InOrderTraverse(bt->rchild) ; } 9、函数depth实现返回二叉树得高度。 int depth(Bitree *t){ if(t==NULL) return 0; else{ hl=depth(t->lchild); hr= de pth(t->rchild) ; if( hl>hr ) return hl+1; else return hr+1; } } 10、交换二叉树结点左右子树得递归算法 Bitree *function(Bitree *bt){ Bitree *t,*t1,*t2; if(bt==NULL) t=NULL; else{ t=(Bitree *)malloc(sizeof(Bitree)); t->data=bt->data; t1=function(bt->left); t2=function(bt->right); t->left=t2; t->right=t1; } return(t); } 11、已知二叉树得先序遍历序列为ABCDEFGH,中序遍历序列为CBEDFAGH,画出二叉树。 答案:二叉树形态