中国地质大学数据结构实习报告_中国地质大学实习报告

2020-02-27 实习报告 下载本文

中国地质大学数据结构实习报告由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“中国地质大学实习报告”。

Practice Report for Data Structures and Algorithm Analysis

Data Structures Course Report

Candidate: Student Number:

Major:

Communication Engineering Supervisor:

Wu rangzhong

China University of Geosciences(Wuhan)Wuhan, Hubei 430074, P.R.China

May 18, 2013

China University of Geosciences, Faculty of Mechanics and Electronic Information

删除程序代码

void DeletekTh(int position, pNode L){

pNode Tmp=L, TmpPre=NULL;

int i=0;

for(i=0;i

{

if(Tmp->next!=NULL)

{

TmpPre = Tmp;

Tmp=Tmp->next;

}

else if(Tmp->next==NULL && i

{

printf(“The Deletion position is invalid!n”);

return;

}

}

TmpPre->next=Tmp->next;

free(Tmp);}

这是程序主函数,以此来完成以上子函数的功能

#include #include #include “lianbiao.h”

int main(){

int i,x,position;pNode m;

pNode LinkLists;

{

printf(“输入元素来建立链表,0为结束输入的标志”);

LinkLists = CreateLinkLists();

printf(“链表为:”);

PrintLists(LinkLists);

}

printf(“选择你需要的操作,输入序号:n”);

printf(“

1.建立一个链表

n”);

printf(“

2.输出链表

n”);

}

2.数组实现线性表

用数组实现的功能和用链表表示的相同 部分子函数如下

//初始化顺序表:给出初始化长度

int initialArray(arrayList arrLst,int len)

{

arrLst->length=0;

arrLst->size=len;

arrLst->Array=(ElemType*)malloc(len*sizeof(ElemType));

if(arrlst->Array==NULL)

return 0;

else

return 1;

}

//删除顺序表

void deleteArray(arrayList arrLst)

{

arrLst->length=0;

arrLst->size=0;

free(arrLst->Array);

arrLst->Array=NULL;

}

//清空顺序表

void clearArray(arrayList arrLst)

{

}

printf(“n”);

}

//判断某个元素的位置

int locateElem(arrayList arrLst,ElemType e)

{

int i;

for(i=0;i

{

if(e==arrLst->Array[i])

return i;

}

return-1;

}

堆栈

主要是实现元素的进栈、出栈、判断栈中元素个数

堆栈的源函数 #include #include #include“duizhan.h”

STACK CreatStack(){

STACK S;

S=(STACK)malloc(sizeof(struct Stack));

if(S==NULL)

{

printf(“无法建立堆栈!”);

return 0;

}

S->top=-1;

return S;}

int IsFull(STACK S){

return(S->top==MAX-1);}

int IsEmpty(STACK S){

int StackLen(STACK S){

if(!IsEmpty(S))

return S->top;else

return 0;}

堆栈的主函数 #include #include #include“duizhan.h”

void main(){

STACK liliS;

liliS=CreatStack();

Push(1,liliS);

Push(2,liliS);

Push(3,liliS);

Pop(liliS);

Pop(liliS);

DisposeStack(liliS);} 设置断点可以看到栈中的元素

主函数 void main(){ STRING *Str, *Pat;int position=0;Str=(STRING *)malloc(sizeof(STRING));Pat=(STRING *)malloc(sizeof(STRING));char S_str[20]=“ababcabcacbab”;char P_str[20]=“abcac”;

Str->p_str = S_str;Str->length = strlen(S_str);Pat->p_str = P_str;Pat->length = strlen(P_str);

int *next=(int *)malloc(sizeof(int)*(Pat->length +1));

GetNext(Pat, next);position=IndexKMP(Str, Pat, next);

printf(“%dn”,position);}

显示两个字符串是在第6个元素开匹配的。

}

//插入新元素

M->data[p].i=row;

M->data[p].j=col;

M->data[p].e=e;

M->tu++;

return OK;

}

稀疏矩阵的的转置

Status TransposeSMatrix(const TSMatrix *M,TSMatrix *T){

int col,p,q;

T->mu=M->nu;

T->nu=M->mu;T->tu=M->tu;

if(T->tu){

q=1;

for(col=1;colmu;col++)

for(p=1;ptu;p++)

if(M->data[p].j==col){

T->data[q].i=M->data[p].j;

T->data[q].j=M->data[p].i;

T->data[q].e=M->data[p].e;

q++;

}

}

return OK;

}

稀疏矩阵的乘法

Status MultSMatrix(const TSMatrix *M,const TSMatrix *T,TSMatrix *Q){

int i,j,k,p;

ElemType m,t,s;

if(M->nu!=T->mu){

printf(“Sorry,these two matrice can't multiply.n”);

return ERROR;

}

Q->mu=M->mu;

Q->nu=T->nu;

Q->tu=0;

p=1;

for(i=1;imu;i++){

for(j=1;jnu;j++){

s=0;

for(k=1;knu;k++){

if(FALSE==FindElem(M,i,k,&m))

查找

采用的是快速查找法 源程序

#include #include “chazhao.h”

int SequenceSearch(int array[],int n,int x){

int i=0;

while(i

i++;

if(i==n)

return-1;

else

return i;} 建立一个数组后查找元素,输入元素后,返回元素所在数组的下标。

5用数组储存数据,在用冒泡法排序后将排序好的数组输出。

AVL树

程序主要是在向二叉树插入节点后,最终生成AVL树

AVL树中的单旋转

static Position SRL(Position K2)

{

Position K1 = NULL;

K1 = K2->left;

K2->left = K1->right;

K1->right = K2;

K2->height = MAX(Height(K2->left), Height(K2->right))+ 1;

K1->height = MAX(Height(K1->left), Height(K2))+ 1;

return K1;}

static Position SRR(Position K2)

{

Position K1 = NULL;

#else

Position K1 = NULL;

Position K2 = NULL;

K1 = K3->right;

K2 = K1->left;

K1->left = K2->right;

K2->right = K1;

K3->right = K2->left;

K2->left = K3;

return K2;

#endif

}

主程序

#include #include “avlTree.h”

void PrintTree(AvlTree T)

{

if(T!= NULL)

{

PrintTree(T->left);

printf(“h=%d, e=%dn”, T->height, T->ele);

PrintTree(T->right);

}

}

int main(void)

{

AvlTree T = NULL;

T = MakeEmpty(T);

T = Insert(3, T);

T = Insert(2, T);

T = Insert(1, T);

T = Insert(4, T);

T = Insert(5, T);

T = Insert(6, T);

T = Insert(7, T);

T = Insert(16, T);

T = Insert(15, T);

T = Insert(14, T);

T = Insert(13, T);

s->bottom=0;

s->top=0;

memset(s->printout,0,sizeof(int)*MAX_LEN);}

void push(mstack *s,int m){

s->printout[s->top++]=m;}

int pop(mstack *s){

return s->printout[--s->top];}

void InitGraph(Graph *g,int n){

int i,j;

for(i=1;i

for(j=1;j

{

if(i==j)g->matrix[i][j]=0;

else g->matrix[i][j]=INFINITE;

}

for(i=1;i

{

in[i]=0;

Len[i]=INFINITE;

path[i]=0;

} }

《中国地质大学数据结构实习报告.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
中国地质大学数据结构实习报告
点击下载文档
相关专题 中国地质大学实习报告 实习报告 数据结构 中国地质大学 中国地质大学实习报告 实习报告 数据结构 中国地质大学
[实习报告]相关推荐
    [实习报告]热门文章
      下载全文