实验二:线性表的链式表示和实现

更新时间:2023-09-28 22:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验二:线性表的链式表示和实现

实验二:线性表的链式表示和实现

一、实验目的:

1.掌握线性表的链式存储结构的表示与实现.

2.掌握对链表进行创建、插入、删除和查找等操作的算法。 3.掌握算法的设计与分析过程。

4.进一步熟悉VC++开发环境,熟悉完成一个应用程序的设计过程,掌握有关编辑、调试和整合程序的方法和技巧。

二、实验要求:

1.采用教材中c语言描述的单链表存储结构,模块化设计过程,设计高效的算法完成各种操作任务,针对实际数据实现各种操作。

2.完成程序编写,调试成功后,书写实验报告。

三、实验任务:

1.创建有n(n为正整数)数据元素的单链表,数据从键盘输入。 2.查找第i个结点,找到返回其值,否则返回0; 3.对已经创建的单链表分别进行插入结点操作,在第i个元素之前插入1个结点。

4.删除结点,将第i个结点的元素删除。 5.将单链表进行就地逆转。

6.将链表按值的奇偶数分解成两个链表。 要求:创建单链表后,其他操作可以是任意选择进行的。(考虑设计菜单调用各功能模块)

四、设计指导:

1.结点的定义 #include #include typedef int DataType; typedef struct node {DataType data; struct node *next; }LNode,*LinkList; 2.将复杂的问题分解成若干个相对容易的小问题,并设计好解决每个小问题的函数的函数名、入口参数及其返回值;设计出各个函数的程序框架及完整的主函数程序。(注:每个功能一个函数)

如:

//输出链表数据

void Display(LinkList L) { LinkList p; p=L->next;

第 1 页/共 3 页

实验二:线性表的链式表示和实现

while(p) { printf(\ p=p->next; }

printf(\}

//单链表初始化

LinkList ListInit( LinkList L)

{L=(LinkList)malloc(sizeof(LNode)); L->next=NULL;

return L; }

//单链表的创建

LinkList ListCreate(LinkList L,int a) { int i;

LinkList p;

//具体操作请大家自己完成 Display(L); return L; }

void ListSearch() {}

//单链表插入

LinkList ListInsert(LinkList L) {

LinkList p,q; p=L;

//具体操作请大家自己完成 Display(L); return L; } //单链表删除

LinkList ListDelete(LinkList L) { LinkList p,q; p=L;

//具体操作请大家自己完成 return L; }

void main() {

第 2 页/共 3 页

实验二:线性表的链式表示和实现

int i; int a,b,c; LinkList L; L=ListInit(L); while(1) { printf(\单链表*****\\n\ printf(\创建*****\\n\ printf(\查找*****\\n\ printf(\插入*****\\n\ printf(\删除*****\\n\ printf(\退出*****\\n\ printf(\请输入您的选择:\\n\ scanf(\ switch(i) { case 1: printf(\请输入元素个数:\\n\ scanf(\ ListCreate(L,a);break; case 2:ListSearch();break; case 3: ListInsert(L);break; case 4: ListDelete(L); Display(L); break; case 0:exit(0); default:printf(\您的输入有误,请重新输入!\\n\ } } }

第 3 页/共 3 页

本文来源:https://www.bwwdw.com/article/npjd.html

Top