资源简介
【实验要求】
(1) 从键盘读入一组整数,按输入顺序形成单链表。并将创建好的单链表元素依次打印在屏幕上。(注意:选择头插法或者尾插法!)
(2) 设计一个带选择功能菜单的主函数,菜单中至少具备任意选择删除、插入、查找数据元素,和求单链表表长等几项功能。
(3) 当选择删除功能时,从键盘读入欲删除的元素位置,按指定位置删除;当选择插入功能时,从键盘读入新元素值和被插入位置,在指定位置插入;当选择查找功能时,从键盘读入欲查找的元素值,返回其位置序号;当选择求表长功能时,返回该单链表表长的数值。
(4) 每种操作结束后,都能在屏幕上打印出此时单链表元素的遍历结果。
代码片段和文件信息
#include “stdio.h“
#include “stdlib.h“
#include “malloc.h“
#define Stack_LISTSIZE 100
typedef int DataType;
typedef struct Node { //链表初始化
DataType data;
struct Node *next;
}LNode *PNode *linkList;
int InitList(linkList *h); /*初始化单链表*/
int ListLength(linkList h); /*单链表的长度*/
int ListEmpty(linkList h); /*判断单链表是否为空表*/
int ListInsert(linkList h int position DataType Data_Value); /*单链表的插入*/
int ListDelete(linkList h int position DataType *item); /*单链表的元素删除*/
int Find(linkList h DataType item); /*单链表的元素查找*/
void TraverseList(linkList h); /*单链表的遍历*/
void DestroyList(linkList h); /*摧毁单链表*/
void TraverseList(linkList h);
void menu();
int main(void)
{
int Choice i = 0 j position Data Flag = 0;
int Data_Value[Stack_LISTSIZE];
linkList h = NULL;
DataType item;
InitList(&h);
printf_s(“请输入要初始化后单链表的值,表长最长为20,当输入完成后,按‘Enter‘键退出输入\n“);
while (i < Stack_LISTSIZE)
{
scanf_s(“%d“ &Data_Value[i++]);
if (getchar() == ‘\n‘)
break;
}
j = i;
for (i = 0; i < j; i++)
{
if (!ListInsert(h i + 1 Data_Value[i]))
{
printf_s(“\n运行错误\n“);
}
}
printf_s(“\n建立单链表成功\n“);
TraverseList(h);
while (1)
{
menu();
scanf_s(“%d“ &Choice);
switch (Choice)
{
case 1:
printf_s(“请输入要插入的位置和元素,例如输入(1 2)在第1个位置插入2:“);
scanf_s(“%d %d“ &position &Data);
Flag = ListInsert(h position Data);
if (Flag == 1)
{
printf_s(“插入元素后的单链表为:\n“);
TraverseList(h);
}
break;
case 2:
printf_s(“请输入要删除的元素位置\n“);
scanf_s(“%d“ &position);
Flag = ListDelete(h position &item);
if (Flag == 1)
{
printf_s(“\n删除的元素\t%d\n“ item);
printf_s(“\n删除后单链表中的元素\n“);
TraverseList(h);
}
break;
case 3:
printf_s(“请输入要查找的元素值\n“);
scanf_s(“%d“ &Data);
Data = Find(h Data);
printf_s(“元素所在位置 %d“ Data);
printf_s(“\n此时单链表中的元素\n“);
TraverseList(h);
break;
case 4:
Data = ListLength(h);
printf_s(“单链表长度 %d“ Data);
printf_s(“\n此时单链表中的元素\n“);
TraverseList(h);
break;
case 5:
printf_s(“\n欢迎下次使用!谢谢!\n“);
return 0;
default:
printf_s(“\n\n输入错误!请重新输入\n\n“);
break;
}
}
}
void menu()
{
printf_s(“\n“);
printf_s(“ ****************************************** \n“);
printf_s(“ ▍ ▍ \n“);
printf_s(“ ▍ 实验二:单链表的基本算法 ▍ \n“);
printf_s(“ ▍
相关资源
- 顺序表的基本算法(实验)
- 算法导论第二十三章习题解答
- 果蝇算法论文
- 深度学习算法实践源码-吴岸城
- 基于OpenCV的分水岭算法实现
- K-means算法论文
- RFID防碰撞算法论文
- 数据挖掘18大算法实现以及其他相关经
- Introduction to Algorithms - A Creative Approa
- 基于决策树和朴素贝叶斯算法对Adul
- 数据结构第二版配套课件及答案
- 微电网PSO优化算法
- 暗原色单幅去雾改进算法
- 数据结构课设-模拟电梯
- 算法竞赛入门经典 第2版刘汝佳+高清
- 北大林宙辰:机器学习一阶算法的优
- 基于概率神经网络的图匹配算法研究
- 遗传算法论文11篇
- 德州扑克DeepStack算法.pdf
- ForceAtlas2图布局算法
- 基于遗传算法的立体车库车位调度研
- 稀疏表示SRC算法
- HMM算法第四种实现代码
- SM2国密算法实现基于mircal的实现
- 指数平滑算法
- 操作系统课程设计 银行家算法论文
- 电子科大2018肖鸣宇算法分析与设计真
- 算法导论(第2版)Introduction to Algor
- 物业费管理系统源码超详细注释附文
- 程序员的数学1+2+3 数学思维+概率统计
评论
共有 条评论