数据结构实验Word文档下载推荐.docx

上传人:b****6 文档编号:19726581 上传时间:2023-01-09 格式:DOCX 页数:16 大小:59.41KB
下载 相关 举报
数据结构实验Word文档下载推荐.docx_第1页
第1页 / 共16页
数据结构实验Word文档下载推荐.docx_第2页
第2页 / 共16页
数据结构实验Word文档下载推荐.docx_第3页
第3页 / 共16页
数据结构实验Word文档下载推荐.docx_第4页
第4页 / 共16页
数据结构实验Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数据结构实验Word文档下载推荐.docx

《数据结构实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构实验Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

数据结构实验Word文档下载推荐.docx

Voidmenu()

BoolDelLinkList(LinkList&

L,intpos,int&

e)

5.调试分析

--------------------Configuration:

33-Win32Debug--------------------

Compiling...

11.cpp

D:

\AA\33\11.cpp(6):

errorC2146:

syntaxerror:

missing'

;

'

beforeidentifier'

data'

errorC2501:

'

ElemType'

:

missingstorage-classortypespecifiers

\AA\33\11.cpp(12):

errorC2061:

identifier'

\AA\33\11.cpp(13):

delect_L'

fatalerrorC1004:

unexpectedendoffilefound

Errorexecutingcl.exe.

33.exe-7error(s),0warning(s)

6.使用说明

程序名为LinkList.exe,运行环境为DOS。

程序执行后显示:

2----DELETE

PleaseSelect

(2):

在PleaseSelect

(2):

后输入数字选择执行不同的功能。

每执行一次功能,就会显示执行的结果(正确或错误)以及执行后单链表的内容。

选择2:

显示DELETEpos,e=,要求输入要删除的位置,执行成功后返回元素的值。

7.测试结果

#include<

stdio.h>

stdlib.h>

math.h>

typedefintElemtype;

typedefstructLNode;

{ElemTypedata;

structLNode*next;

}LNode;

LNode*L;

LNode*creat_L();

voidout_L(LNode*L);

voidinsert_L(LNode*L,inti,ElemTypee);

ElemTypedelect_L(LNode*L,inti);

intlocat_L(LNode*L,ElemTypee);

voidmain()

{inti,k,loc;

ElemTypee,x;

charch;

do{printf("

\n"

);

printf("

\n1.建立单链表"

\n2.删除元素"

\n3.结束程序运行"

\n===================================="

\n请输入您的选择(1,2,3)"

scanf("

%d"

&

k);

switch(k)

{case1:

{L=creat_L();

out_L(L);

}break;

case2:

{printf("

\n请输入要删除元素的位置:

"

i);

x=delete_L(L,i);

if(x!

=-1){printf("

\n删除的元素为:

%d\n"

x);

删除%d后的单链表为:

}

elseprintf("

\n要删除的元素不存在!

LNode*creat_L()

{LNode*h,*p,*s;

ElemTypex;

h=(LNode*)malloc(sizeof(LNode));

h->

next=NULL;

p=h;

\n请输入第一个数据元素:

x);

while(x!

=-999)

{s=(LNode*)malloc(sizeof(LNode));

s->

data=x;

p->

next=s;

p=s;

请输入下一个数据:

(输入-999表示结束.)"

return(h);

}/*creat_L*/

voidout_L(LNode*L)

{LNode*p;

p=L->

next;

\n\n"

while(p!

=NULL)

{printf("

%5d,p->

data);

p=p->

};

}/*out_link*/

Elemtypedelete_L(LNode*L,inti)

{LNode*p,*q;

intj;

ElemTypex;

p=L;

j=0;

while(p->

next!

=NULL&

&

j<

i-1){p=p->

j++;

}

if(!

p-next||i<

1){printf("

\n删除位置错误!

return(-1);

else{q=p->

free(q);

return(x);

}/*delete_L*/

实验报告二

设计一个程序,用于演示折半查找的查找方法,要求采用菜单的形式进行选择。

本程序在TC2.0环境下编写程序,完成折半查找。

执行查找操作时,需要输入待查找元素的值。

查找操作完成后,若找到待查找元素,则显示该元素在线性表中的位置,反之,给出Cannotfind!

信息。

完成线性表的查找操作。

(1)为了实现上述程序功能,需要定义线性表的数据结构。

①显示主界面Menu()

②查找表的初始化ElemInit()

③显示静态查找主界面PrintStaticMenu()

④折半查找BinarySearch

⑤主函数main()

(3)各函数间的关系如图所示。

(1)查找表顺序存储结构和链式存储结构的定义

Typedefstruct{

Keytypekey;

}ElemType;

Typedefstruct

ElemTypeelem[MAX_LIST_LEN+1]

Intlength;

}Seq_Table;

Seq_Tableseqtbl;

TypedefstructNODE{

ElemTypeelem;

StructNODE*next;

}LINK_NODE;

(2)基本操作。

Typedefstruct{

KeyTypekey;

InfoTypeotherinfo;

}NodeType;

TypedefNodeTypeSeqlist[n+1];

ZZ-Win32Debug--------------------

XX.CPP

d:

\aa\zz\xx.cpp

(1):

errorC2018:

unknowncharacter'

0xa1'

0xb4'

errorC2006:

#includeexpectedafilename,found'

identifier'

\aa\zz\xx.cpp(7):

errorC2143:

before'

<

class-head>

Typedef'

ZZ.exe-6error(s),0warning(s)

每执行一次功能,就会显示执行的结果(正确或错误)以及执行后线性表的内容。

选择1:

静态查找。

动态查找。

选择0:

退出。

#include〈stdio.h〉

conio.h>

string.h>

malloc.h>

#defineKeytypeint

#defineMAX_LIST_LEN100

#defineENDVALUE-1

TypedefstructBINNODE{

StructBINNODE*lchild,*rchild;

}BSTNode,*BSTree;

/*显示主页面*/

VoidPrintMenu()

{printf("

\n\n\n\n\n"

\t\t\t--各类查找综合演示--\n"

\n\t\t\t*************************"

\n\t\t\t*1-------静态查找*"

\n\t\t\t*2-------动态查找*"

\n\t\t\t*0-------退出*"

\n\t\t\t*************************\n"

\t\t\t请选择功能号(0---2):

/*查找表初始化*/

VoidElemInit()

{

Inti=1;

Printf

LIST_LEN,ENDVALUE);

seqtbl.length=0;

while

(1)

scanf("

elem.key);

if(elem.key==ENDVALUE)break;

else

seqtbl.elem[i++].key;

seqtbl.length++;

/*输出查找表的所有元素*/

voidoutput(Seq_Tableseqtbl1)

intk

printf

for(k=1;

k<

=seqtbl1.length;

k++)

%4d"

k);

4d"

seqtbl1.elem[k]);

/*数据输入界面*/

Intinput()

Intx

getchar()

if(!

((x>

=-32768&

(x<

=32767)))

printf

break;

returnx;

/*显示静态查找主界面*/

VoidPrintStaticMenu()

\t\t\t--静态查找综合演示--\n"

\n\t\t\t*1-------折半差找*"

printf("

\n\t\t\t*0-------返回主界面*"

\n\t\t\t***********************************\n"

\t\t\t请选择功能号

(1):

IntBinarySearch(Seq_TableSeq_Tbl,KeytypeSea_Key)

/*Seq_Tbl为查找表,Seq_Key为待查找的关键字*/

intmid,low,high;

low=1;

high=Seq_Tbl.length;

while(low<

=high)

{mid=(low+high)/2;

if(Seq_Tbl.elme[mid].key<

Seq_Key)

low=mid+1;

else

if(Seq_Tbl.elme[mid].key>

Seq_Key)

high=mid-1

if(low>

high)

return0

returnmid;

voidStaticSearch()

charstatic_func_choice;

printStaticMenu();

getchar();

dtatic_func_choice=getchar();

while(static_fun_choice!

='

0'

{

switch(static_func_choice)

{

case'

1'

:

{

intretval,seakey;

seakey=input();

printf("

\n请注意!

折半查找要求是有序表,若元素顺序无序,则首先将排序!

\n"

BubbleSort(&

seqtbl);

retval=BinarySearch(seqtbl,seakey);

output(seqtbl);

\n\t你要查找的关键字为:

seakey);

if(retval>

0)

printf("

\n\t查找成功,关键字为%d的元素位于第个%d位置!

seakey,retval);

else

\n\t对不起,关键字为%d的元素不存在."

seakey);

break;

}

default:

printf("

\n请输入正确的操作选项

(1):

}

getchar();

PrintStaticMenu();

voidDynamicSearch()

{KeytrpeIns_key,Sea_Key;

BSTreep,root=NULL;

chardynamic_func_choice;

PrintDynamicMenu();

dynamic_fun_choice=getchar();

while(dynamic_func_choice!

{switch(dynamic_func_choice)

{case'

\n\t请输入要查找的关键字:

scanf("

Sea_Key);

SearchBST(root,Sea_Key);

break;

printDynamicMenu();

dynamic_func_choice=getchar();

{charfunc_choice;

PrintMenu();

func_choice=getchar();

while(fun_choice!

switch(func_choice)

case'

StaticSearch();

break;

2'

DynamicSearch()

func_choice='

default:

printf("

实验报告三

要求使用自己熟悉的的排序算法,将指定文件中的字符按行进行插入排序。

(1)建立文件建立一个文本文件IN.TXT,输入若干行字符串(文件中的数据可自拟),每个串以回车符结束。

(2)算法输入从文件IN.TET中按行读取字符并存入二维字符数组。

(3)算法输出将排序后的二维字符数组输出到另一个文本文件OUT.TXT中。

先将指定文本文件IN.TXT中的数据按行读入一个二维字符数组;

然后对该二维字符数组中的字符按行执行直接插入排序和冒泡排序;

最后将已排好序的数据按行写入另一个文本文件OUT.TET中。

冒泡排序的基本思想是将n个记录看作按纵向排列,每趟排序时自下至上对每对相邻记录进行比较,若次序不符合要求(逆序)就交换。

每趟排序结束时都能使排序范围内关键字最小的记录象一个气泡一样升到表上端的对应位置,整个排序过程共进行n-1趟,依次将关键字最小、次小、第三小…的各个记录“冒到”表的第一个、第二个、第三个…位置上

(1)数据类型定义

Charxx[50][80];

(2)基本操作

VoidInsertSort(SeqListR)

{inti,j;

For(i=2;

i<

=n;

i++)

{R[0]=R[i];

J=i-1;

While(R[0].key<

[R[j].key]

{/*从右向左有序区R[1...i-1]中查找R[i]的插入位置*/

R[j+1]=R[j];

j--;

R[j+1]=R[0];

}/*InsertSort*/

(3)设文件IN.TXT中数据如下:

ISAMenhancesthefunctionalityofyourprogramsthroughits

Flexibility.Ifyouaddasectiontoabook,removeafewpafes,

Orrearrangeparagraphsorsections,youhavetorecreateyour

Index,sincethekeywordsmustappearinrelationtoeachotheris

Alphabeticorder.AISAMindexchangesautomatianemployee,or

慢慢-Win32Debug--------------------

解决.cpp

Linking...

LIBCD.lib(wincrt0.obj):

errorLNK2001:

unresolvedexternalsymbol_WinMain@16

Debug/慢慢.exe:

fatalerrorLNK1120:

1unresolvedexternals

Errorexecutinglink.exe.

慢慢.exe-2error(s),0warning(s)

程序运行后文件OUT.TXT中的数据如下:

AIMSaaacceeeffgghhhhiiilmnnnnoooooprrrrssstttttuuuyy

,.Iaaaaabbcddeeeeeefffgiiiikllmnooooooprsstttuvwxyy

aaaaaaacceeeeeeegghhinnoooooopprrrrrrrrrssstttuuvyy

.aaaaccddeeeeeeeehhhiiiiklmnnnnoooopprrrrssstttt

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1