数据结构实验报告

  • 格式:doc
  • 大小:51.00 KB
  • 文档页数:10

下载文档原格式

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

实验一顺序表的操作(2013-3-14)

一、实验目的

1、掌握使用C++上机调试的基本方法;

2、掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构上的运算。

二、实验要求

1、认真阅读和掌握本实验的程序。

2、上机运行本程序。

3、保存和打印出程序的运行结果,并结合程序进行分析。

4、按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果

三、实验内容

程序1:线性表基本操作的实现

这个程序中演示了顺序表的创建、插入、删除和查找,请修改并完成。

程序如下:

#include

#include

/*顺序表的定义:*/

#define ListSize 100

typedef struct

{ int data[ListSize]; /*向量data用于存放表结点*/

int length; /*当前的表长度*/

}SeqList;

void main()

{ void CreateList(SeqList *L,int n);

void PrintList(SeqList *L,int n);

int LocateList(SeqList *L,int x);

void InsertList(SeqList *L,int x,int i);

void DeleteList(SeqList *L,int i);

SeqList L;

int i,x;

int n=10; /*THE LENGTH OF LIST*/

L.length=0;

clrscr();

CreateList(&L,n); /*CREAT THE LIST*/

PrintList(&L,n); /*PRINT THE LIST*/

printf("INPUT THE RESEARCH ELEMENT");

scanf("%d",&x);

i=LocateList(&L,x);

printf("the research position is %d\n",i); /*顺序表查找*/ printf("input the position of insert:\n");

scanf("%d",&i);

printf("input the value of insert\n");

scanf("%d",&x);

InsertList(&L,x,i); /*顺序表插入*/

PrintList(&L,n); /*打印顺序表*/

printf("input the position of delete\n");

scanf("%d",&i);

DeleteList(&L,i); /*顺序表删除*/

PrintList(&L,n);

getch();/*打印顺序表*/

}

/*顺序表的建立:*/

void CreateList(SeqList *L,int n)

{int i;

printf("please input n numbers\n");

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

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

}

L->length=n;

}

/*顺序表的打印:*/

void PrintList(SeqList *L,int n)

{int i;

printf("the sqlist is\n");

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

printf("%d ",L->data[i]);

}

/*顺序表的查找:*/

int LocateList(SeqList *L,int x)

{int i;

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

if((L->data[i])==x) return(i);

else return(0);

}

/*顺序表的插入:*/

void InsertList(SeqList *L,int x,int i)

{int j;

for(j=L->length;j>=i;j--)

L->data[j+1]=L->data[j];

L->data[i]=x;

L->length++;

}

/*顺序表的删除:*/

void DeleteList(SeqList *L,int i)

{ int j;

for(j=i;j<=(L->length)-1;j++)

L->data[j]=L->data[j+1];

}

实验二单链表操作(2013-3-28)

一、实验目的

掌握单链表的基本操作:插入、删除、查找等运算。

二、实验要求

1、认真阅读和掌握本实验的程序。

2、上机运行本程序。

3、保存和打印出程序的运行结果,并结合程序进行分析。

4、按照你对单链表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果

三、实验内容

程序1:单链表基本操作的实现

这个程序中演示了单链表的创建、插入、删除和查找。

程序如下:

#include

typedef struct node{

int data;

struct node *next;

} NODE;

/******************************************/

NODE *Create(){

NODE *p,*head;

int x;

head=(NODE *)malloc(sizeof(NODE));

head->next=NULL;

printf("Input data,-1 to End!\n");

scanf("%d",&x);

while(x!=-1){

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

p->data=x;

p->next=head->next;

head->next=p;

scanf("%d",&x);

}

return(head);

}

/******************************************/

void Output(NODE *head){

NODE *p;

p=head;

printf("Begin to dump the LinkList...\n");