資源簡介
【實驗要求】
(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? {
scanf_s(“%d“?&Data_Value[i++]);
if?(getchar()?==?‘\n‘)
break;
}
j?=?i;
for?(i?=?0;?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(“???????????????▍????????????
評論
共有 條評論