实验四 双向链表

2018-11-17 21:34

实验名称 :实验四 双向或循环链表的基本操作

一、实验项目名称:双向或循环链表的基本操作 二、实验目的

1)通过实验理解双向链表或循环链表的结构。 2)通过实验掌握双向链表或循环链表的基本操作。

三、实验基本原理

1、数据结构

2、算法思想

1.构思:双向循环链表的创建建立在双向链表上,所以建立双向循环表每个结点都有三个属性:数据域、上个结点、下个结点,其中第一个结点的上一个结点是最后一个结点,最后一个结点的下一个结点就是第一个结点,所以就构成了双向循环链表。 双链表的单元类型定义

Type struct DuLNode {

Elemtype data;

Struct DuLNode *prior;//建立表头结点

Struct DuLNode *next;//建立表尾结点 } DuLNode,*DuLinkList;

3、算法描述

①建立一个双链表,输入元素。由p和s两个指针来存放元素。以0判断是否结束,如果不为0 ,则继续,为0则截止。

s->data=e;

s->next=p->next; s->prior=p; p->next->prior=s; p->next=s; p=s;

②查找元素:首先判断位置是否合法(p->data!=e&& p->next!=head)若合法进行查找运算。 需要引用DuLinkList,(DuLinkList &L)输入要查找的元素的位置,判断双链表中是否有该元素,如果是则输出该元素,如果没有,则提示没有该元素。

③插入元素:判断位置是否合法(i<1||i>L.Length),若合法进行查插入运算。需要引用DuLinkList,(DuLinkList &L)输入要插入的元素及其位置,插入数据然后输出数据。

④删除元素:判断位置是否合法(i<1||i>L.Length),若合法进行查删除运算。输入要插入的元素及其位置,删除该数据。

本程序实现双链表的创建、查找、插入、删除、显示、菜单为主的六个函数组成。

四、主要仪器设备及耗材

电脑

运行环境:visual C++6.0

五、实验步骤

(1)打开visual C++,新建工程console application工程,新建文件C++ source file。 (2)输入自己的程序代码

(3)如果有报错则修改程序。无则组建调试

六、实验数据及处理结果 1、程序清单

#include #include #include

#define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef struct DuLnode {

int data;

Struct DuLNode *prior;//建立表头结点 Struct DuLNode *next;//建立表尾结点

int L;

}DuLinkList; DuLinkList *ahead;

int DuLinkListCreate(DuLinkList &L) { DuLinkList *p,*s;

int x;

ahead=(DuLinkList*)malloc(sizeof(DuLinkList));

ahead->data=-1; ahead->next=ahead; ahead->prior=ahead;

p=ahead; L.Length=0;

printf(\请输入元素,输入0结束\\n\ scanf(\ while(x!=0) {

s=(DuLinkList*)malloc(sizeof(DuLinkList)); s->data=x; s->next=p->next; s->prior=p; p->next->prior=s; p->next=s; p=s;

scanf(\ L.Length++; }

return OK;

}

void DuLinkListDisplay(DuLinkList &L) { DuLinkList * p=ahead->next; while(p!=ahead)

{printf(\ p=p->next;

}

printf(\

}

int DuLinkListLocate(DuLinkList &L,int e) //{ DuLinkList * p=ahead->next; int i=1;

if(p==NULL)

return ERROR;

while(p->data!=e&& p->next!=ahead) {p=p->next;

i++;

查找元素 }

if(p->data==e)

printf(\查找的位置是:%d \\n\ else

printf(\并没有这个元素\\n\

return OK;

}

int DuLinkListInsert(DuLinkList &L,int i,int e) // { int j; j=0;

DuLinkList *p=ahead->next,*s;

while((p->next!=ahead)&&(jnext; j++;

}

if((i>0)&&(j=i-1))

{

s=(DuLinkList*)malloc(sizeof(DuLinkList)); s->data=e; s->prior=p->prior; p->prior->next=s; s->next=p; p->prior=s;

}

DuLinkListDisplay(L); return OK;

}

插入元素


实验四 双向链表.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:桥梁下部结构施工操作手册(确定稿)

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

马上注册会员

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