数据结构线性表的基本操作及应用实验报告

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

实验日期2010.4.19 教师签字成绩

实验报告

【实验名称】第二章线性表的基本操作及应用

【实验目的】

(1)熟练掌握线性表的基本操作的实现;

(2)以线性表的各种操作(建立、插入、删除等)的实现为重点;

(3)通过本次实验加深对C语言的使用(特别是函数的参数调用、指针类型的应用和链表的建立等各种基本操作)。

【实验内容】

1.顺序表的基本操作(顺序表的插入、访问、删除操作)

#include

#include

#define OK 1

#define ERROR 0

#define OVERFLOW -1

typedef int ElemType;

typedef int Status;

#define LIST_INIT_SIZE 100

#define LISTINCREMENT 10

typedef struct{

ElemType *elem;

int length;

int listsize;

}SqList;

Status InitList_Sq(SqList *L){

int i,n;

L->elem = (ElemType * )malloc(LIST_INIT_SIZE*sizeof(ElemType));

if (! L->elem) exit (OVERFLOW);

printf("您希望您的顺序表有几个元素: ");

scanf("%d",&n);

printf("\n");

printf("输入您的%d个元素,以构建顺序表: \n",n);

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

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

L->length = n;

L->listsize = LIST_INIT_SIZE;

return OK;

}//InitList_Sq

Status PrintList_Sq(SqList L){

int i;

printf("顺序表中的元素为:");

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

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

printf("\n");

return OK;

}//PrintList_Sq

int ListInsert_Sq(SqList* L,int i,ElemType x) //对顺序表进行插入操作{int j;

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

{printf("\t\t\t顺序表已满");return 0;}

else

{

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

{printf("\t\t\t位置不合法");return 0;}

else

{

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

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

L->elem[i-1]=x;

L->length++;

return 1;

}

}

}

int ListDelete_Sq(SqList* L,int i) //对顺序表进行删除操作

{int j;

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

{printf("\t\t\t不存在第i个元素");return 0;}

else

{

for (j=i-1;jlength;j++)

{

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

}

L->length--;

return 1;

}

}

int LocateElem(SqList *L, int i) {

if(i<1||i>L->length)return ERROR;

else return L->elem[i-1];

}

int scan()

{

int choose;

printf("选择要执行的基本操作:\n1.插入元素;2.删除元素;3.访问元素.\n");

printf("输入其他值退出程序……\n");

scanf("%d",&choose);

return(choose);

}

void main(){

SqList L;

ElemType e;

int i;

int quit=0;

if (InitList_Sq(&L)==OVERFLOW)

printf("分配失败,退出程序!");

printf("输出程序中的元素\n");

PrintList_Sq(L);

while(!quit)

switch(scan()){

case 1:printf("\n请输入你所需要插入的位置和你要插入的元素:");

printf("\n请输入i和e的值:");

scanf("%d%d",&i,&e);

if (ListInsert_Sq(&L,i,e)==OK) PrintList_Sq(L);break;

case 2:printf("\n请输入你所需要删除元素的位置:");

scanf("%d",&i);

if(ListDelete_Sq(&L,i)==OK) PrintList_Sq(L);break;

case 3:printf("请输入所要查找元素的位置:\n");

scanf("%d",&i);

if(LocateElem(&L,i))

printf("该位置元素的值为:%d!\n",LocateElem(&L,i));

else printf("该位置的元素不存在!\n");break;

default:quit=1;

相关文档
最新文档