实验一顺序表的基本操作..docx
文本预览下载声明
南京信息工程大学 实验(实习)报告实验(实习)名称 顺序表的基本操作 实验(实习)日期 2012/10/19 得分 指导教师 系 计软院 专业 网络工程 年级 2011 班次 1 姓名 管超 学号 20111346032顺序表的基本操作实验目的掌握线性表的顺序表基本操作:建立、插入、删除、查找、合并、打印等运算。实验准备奔腾2计算机或以上机型Visual C++ 6.0实验内容建立一个含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。往该顺序表中第i位置插入一个值为e的数据元素。从该顺序表中第i位置删除一个数据元素,由e返回。从该顺序表中查找一个值为e的数据元素,若找到则返回该数据元素的位置,否则返回“没有找到”。实验代码#include stdio.h #include stdlib.h #include conio.h #include string.h #define LIST_INIT_SIZE 10#define INCREMENT 2typedef struct{int *elem;int length;int listsize;}SqList;//初始化顺序表void Init_List_Sq(SqList L) {L.elem = (int *)malloc(LIST_INIT_SIZE*sizeof(int));if (! L.elem){printf( Memory OVERFLOW!\n);exit(0);}L.length = 0;L.listsize = LIST_INIT_SIZE;}//在顺序表中插入evoid InsertList(SqList L, int i, int e){int *newbase, *p, *q;if (i1 || iL.length+1){printf( Location ERROR!\n);exit(0);}if (L.length = L.listsize){newbase = (int *)realloc(L.elem, (L.listsize+INCREMENT)*sizeof(int));if (! newbase){printf( Memory OVERFLOW!\n);exit(0);}L.elem = newbase;L.listsize += INCREMENT;}q = (L.elem[i-1]);for (p = (L.elem[L.length-1]); p=q; --p){*(p+1) = *p;}*q = e;++L.length;}//在顺序表中删除evoid DeleteList(SqList L, int i, int e){int *p, *q;if ((i1) || (iL.length)){printf( Location ERROR\n);exit(0);}p = (L.elem[i-1]);e = *p;q = L.elem + L.length -1;for (++p; p=q; ++p){*(p-1) = *p;}--L.length;}//在顺序表中查找eint LocateElem(SqList L, int e){int i = 1;int *p = L.elem;while (p != L.elem+L.length){if (*p == e){return i;}else{++i;++p;}}return 0;}//输出顺序表void Output(SqList L){int *p = L.elem;printf( List: %d, *p);++p;while (p != L.elem+L.length){printf( - %d, *p);++p;}printf(\n);}int main(){char option;int address, data;SqList List;Init_List_Sq(List);while (1){printf(\n);printf(********************\n);printf( 1.Insert a data\n);printf( 2.Delete a data\n);printf( 3.Locate a data\n);printf( 4.Dispaly the list\n);printf( 5.Exit\n);printf(********************\n);printf( Enter your choice (1 - 5): );option = getche();printf(\n\n);switch (option){case 1:printf( Please enter a data: );scanf(%d, data
显示全部