实验二 顺序表与链表(2)

2019-03-29 13:44

《数据结构与算法》实验指导V2017 printf(\ PrintList_sq(&sl); break; case 2:

printf(\ printf(\ scanf(\ int pos;

if (!ListLocate(&sl,k,&pos)) printf(\ else {

printf(\ printf(\ PrintList_sq(&sl); }

break; case 3:

printf(\

printf(\ scanf(\ if (ListInsert_sq(&sl,m,k)) {

printf(\

printf(\ PrintList_sq(&sl); } else

printf(\ break; case 4:

printf(\

printf(\ scanf(\ int deldata;

if (ListDelete_sq(&sl,k,&deldata)) {

printf(\

printf(\ printf(\ PrintList_sq(&sl); } else

printf(\

常熟理工学院计算机科学与工程学院

6

《数据结构与算法》实验指导V2017 break; case 0:

exit(0); /*如菜单返回值为0程序结束*/ } }

return 0; }

(1)创建一个顺序表

(2)查找元素位置

(3)插入元素

常熟理工学院计算机科学与工程学院

7

《数据结构与算法》实验指导V2017

(4)删除元素

2、按照要求完成程序exp2_2.c,实现单链表的相关操作。exp2_2.c部分代码如下:

#include #include #define ERROR 0 #define OK 1

typedef int ElemType; /*定义表元素的类型*/

/*(1)---线性表的单链表存储表示*/ typedef struct LNode {

ElemType date; struct LNode *next; }LNode,*LinkList;

LNode *InitList(); /*带头结点单链表初始化*/

常熟理工学院计算机科学与工程学院

8

《数据结构与算法》实验指导V2017 void PrintList(LinkList L); /*输出带头结点单链表的所有元素*/

int GetElem(LinkList L,int i,ElemType *e); /*查找第i位置的元素,并由e返回其值*/ int InsertElem(LinkList L,int i,ElemType e);/*在第i个位置插入元素e*/

int DeleteElem(LinkList L,int i,ElemType *e);/*删除第i位置的元素,并由e返回其值*/ void DestroyLinkList(LinkList L);/*释放链表及其空间*/ LinkList CreateList(int n); /*创建n个结点的单链表*/ int menu_select(); /*菜单函数*/ /*带头结点单链表初始化*/ LNode *InitList() {

LinkList L;

L=(LNode *)malloc(sizeof(LNode)); /*申请一个头结点*/ if (!L) return ERROR; /*申请失败*/

L->next=NULL; /*头结点的指针域置空*/ return L; }

/*(1)---输出带头结点单链表的所有元素*/ void PrintList(LinkList L) {

LNode *p=L->next; int i=0; while(p) {

i++;

printf(\第%d个元素%d\ p=p->next;

}

}/*PrintList*/ /*(2)---在单链表的第i个位置插入元素e,若插入成功返回OK,插入失败返回ERROR*/ int InsertElem(LinkList L,int i,ElemType e) {

LNode *p=L,*s; int j=0;

while(p&&j

p=p->next; j++; }

if(!p||j>i-1)

return ERROR;

s=(LNode *)malloc(sizeof(LNode));

常熟理工学院计算机科学与工程学院

9

《数据结构与算法》实验指导V2017 if(!s)return ERROR; s->date=e;

s->next=p->next; p->next=s; return OK; }/* InsertElem */ /*(3)---查找第i位置的元素,若存在返回OK并由e返回其值,若不存在返回ERROR*/ int GetElem(LinkList L,int i,ElemType *e) {

LNode *p; int j=1; p=L->next; while(p&&j

p=p->next; j++; }

if(!p||j>i)

return ERROR; *e=p->date; return OK; }/*GetElem*/ /*(4)---删除第i位置的元素,成功返回OK,并由e返回其值,若不成功返回ERROR,注意删除的结点必须释放其所占空间*/

int DeleteElem(LinkList L,int i,ElemType *e) {

LNode *p=L,*s; int j=0;

while(p&&j

p=p->next; j++; }

if(!p||j>i-1)

return ERROR; s=p->next;

p->next=s->next; *e=s->date; free(s); return OK; }/* DeleteElem */

/*(5)---创建具有n个结点的单链表,创建成功返回其头指针*/ LinkList CreateList(int n)

常熟理工学院计算机科学与工程学院

10


实验二 顺序表与链表(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:道路标准

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: