数据结构复习资料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;klength-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(ilen&&jlen)

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,画出二叉树。

答案:二叉树形态

相关文档
最新文档