printf(\求最大值\\n\ printf(\求最大值\\n\ printf(\置换第i个元素\\n\ printf(\结束!\\n\ printf(\请输入选择!\\n\ scanf(\ switch (select) { case 1: printf(\ scanf(\ printf(\第%d个元素的值为:%d\\n\ break; case 2: if (IsAscending(p)==1) printf(\三元组递增有序\\n\ else printf(\三元组非递增有序\\n\ if (IsDescending(p)==1) printf(\三元组递减有序\\n\ else printf(\三元组非递减有序\\n\ break; case 3: printf(\最大值是:%d\\n\ break; case 4: printf(\最小值是:%d\\n\ break; case 5: printf(\ scanf(\ printf(\ scanf(\ put(p,i,x); printf(\置换第%d个元素后的为:%d,%d,%d\\n\ break; case 0: printf(\操作结束!\ break; default: printf(\输入选择出错!\\n\ }// 结束switch
3个元素分别
}while(select!=0); // 结束while DestroyTriplet(p); }// 结束main
3.主要仪器设备及软件 (1) PC机 (2) Turbo C 2.0 或Visual C++
实验二 线性表及其实现
(基本操作、验证型实验 4学时)
1.目的要求: (1) 熟悉线性表的基本运算在两种存储结构(顺序结构和链式结构)上的实现,以线性表的各种操作(建立、插入、删除等)的实现为实验重点; (2) 通过本次实验帮助学生加深对顺序表、链表的理解,并加以应用; (3) 掌握循环链表和双链表的定义和构造方法 2. 实验内容: (1) 编程实现线性表两种存储结构(顺序存储、链式存储)中的基本操作的实现(线性表的创建、插入、删除和查找等),并设计一个菜单调用线性表的基本操作。
链式存储:
#include
void listElemOutput_L(LinkList &L);
int listInsert_L(LinkList &L,int i,ElemType e); int listDelete_L(LinkList &L,int i); int locateElem_L(LinkList &L,int i ); int menu(); int main() {
LinkList La; int mchioce;
mchioce=menu(); while ( mchioce!=0) {
switch(mchioce) {
case 1:
initList(La); break; break; case 2:
int i,j;
printf(\请输入插入的位置和元素:\ scanf(\ listInsert_L(La, i, j); break; case 3: int k;
printf(\请输入删除元素的位置:\ scanf(\
listDelete_L(La, k); break; case 4: int a; printf(\请输入所查找元素的位置:\ scanf(\
locateElem_L(La,a ); break; case 5:
listElemOutput_L(La); break; default:
printf(\输入错误!!\ break; }
system(\ mchioce=menu(); system(\ } }
int initList(LinkList &L) {
/*构造一个空的线形链表L。*/ Link tempp=NULL;
if(!(tempp=(Link)malloc(sizeof(LNode)))){ printf(\ return ERROR; }
tempp->data=0;/*初始化头结点*/ tempp->next=NULL; L.len=0;
L.head=tempp;
L.tail=tempp;
printf(\链表创建成功!\\n\ int j ,i; int q;
printf(\输入线性表的元素个数:\\n\ scanf(\
printf(\输入新的元素:\\n\ for(i=1;i<=j;i++) {
scanf(\ Link p;
p= (Link)malloc(sizeof(LNode)); p->data = q;
p ->next=L.tail->next; L.tail->next =p; L.tail=L.tail->next; ++L.len; }
return OK; }
void listElemOutput_L(LinkList &L) {
/*int i=1;
for(;i<=p.len;i++) {
printf(\ %d\ p.head=p.head->next; } */ Link q;
q=L.head->next; while(q) {
printf(\ %d\ q=q->next; }
printf(\
system(\ return; }
int listInsert_L(LinkList &L,int i,ElemType e){
/*在带头结点的单链表L的第i 个元素之前插入元素e。*/ LinkList p=L;
相关推荐: