数据结构实验六 数据结构课程设计 数据结构算法演示系统

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构实验报告

实验六

数据结构课程设计

实验题目:数据结构算法演示系统专业班级:网络工程 1002班

组长:王星(2010100230)组员:郭坤铭(2010100243)

张磊(2010100244)

2012年 5月 25日

实验报告

实验类型__综合__实验室_软件实验室二__

一、实验题目

数据结构算法演示系统

二、实验目的和要求

1、掌握数据结构中的基本算法

2、掌握线性结构(如顺序表、链表)的基本操作,如建立、插入、删除、查找等。

3、掌握非线性结构(如二叉树,图)的基本操作,如建立、查找、删除、遍历,求值等

三、需求分析

本演示程序用vc6.0编写,完成以下内容:顺序表、链表的插入、删除、查找,求长度等。在二叉树中实现遍历,显示,求数的深度和叶子结点数。在图中,要求建立邻接表,并输出;计算和输出顶点的度;采用邻接表存储实现无向图的深度、广度优先遍历;输出其拓扑排序和采用邻接矩阵存储实现无向图的最小生成树的 PRIM 算法

四、详细设计

#include

#include

#include

#define TRUE 1

#define FALSE 0

#define OK 1

#define ERROR 0

#define INFEASIBLE -1

#define OVERFLOW -2

#define LIST_INIT_SIZE 50

#define LISTINCREMENT 10

typedef int Status;

typedef int ElemType;

typedef struct

{ElemType *elem;

int length;

int listsize;

}SqList;

typedef struct link{

int data;

struct link *next;

}link,*linklist;

Status InitList_Sq(SqList *L)

{ int i,a;

L->elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType)); //分配空间if(!L->elem) exit(OVERFLOW);//若存储分配失败,返回-2

L->length=0; //空表,长度为0

L->listsize=LIST_INIT_SIZE; //初始存储容量

printf("请输入结点数:");

scanf("%d", &a);

printf("请输入数据:\n");

for(i=0;i

{

scanf("%d",&L->elem[i]);

(L->length)++;

}

return OK;

}

void printlist_sq(SqList L)

{ int i;

printf("输入的元素为:");

for(i=0;i

printf("%d ",L.elem[i]);

printf("\n");

}

Status ListInsert_Sq(SqList *L,int i,ElemType e)

{

int *q=&(L->elem[i-1]);

ElemType *newbase,*p;

if (i<1||i>L->length+1)

return ERROR; //检查i值是否合理

//将线性表第i个元素之后的所有元素向后移动

if(L->length>=L->listsize)

{

newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemT ype));

if(!newbase)

exit(OVERFLOW);

L->elem=newbase;

L->listsize+=LISTINCREMENT;

}

q = &(L->elem[i - 1]);

for(p=&(L->elem[L->length-1]);p>=q;--p)

*(p+1)=*p;

*q=e;

++L->length;

return OK;

}

Status ListDelete_Sq(SqList *L,int i,ElemType e)

{int *p,*q;

if (i<1||(i>L->length))

return ERROR;

p=&(L->elem[i-1]);

e=*p;

q=L->elem+L->length-1;

for (++p;p<=q;++p)

*(p-1) =*p;

--L->length;

return OK;

}

Status GetElem_Sq(SqList *L,int i,ElemType *e)

{ printf("输入要查找元素的位置:");

scanf("%d",&i);

if (i<1||i>L->length)

return ERROR; //判断i值是否合理,若不合理,返回

else *e=L->elem[i-1]; //数组中第i-1的单元存储着线性表中第i个数据元素的内容printf("该位置的元素为%d",L->elem[i-1]);

return OK;

}

int ListLength_Sq(SqList *L)

{

printf("该线性表长为:%d",L->length);

return (L->length);

}

void add_top(link *top)

{

link *p;

int length,i;

top->next=NULL;

printf("输入建立链表长度:");

scanf("%d",&length);

printf("请输入结点元素:");

for(i=1;i<=length;i++)

{

p=(link*)malloc(sizeof(link));

scanf("%d",&i);

p->data=i;

p->next=top->next;

top->next=p;

}

}

void arrive_end(link *top)

{

link *p=top->next;

while(p!=NULL)

{printf("%d",p->data);

p=p->next;

}

printf("\n");

}

void add_bottom(link *top)

{

link *p,*q;

int length,i;

q=top;

相关文档
最新文档