资源简介

【实验要求】 (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(“               ▍            

评论

共有 条评论