数据结构实验报告全集
数据结构实验报告全集
实验一
线性表基本操作与简单程序
1。
实验目得 (1)掌握使用Visual C++ 6、0 上机调试程序得基本方法;)2( 本基得表性线握掌ﻫ操作:初始化、插入、删除、取数据元素等运算在顺序存储结构与链表存储结构上得程序设计方法。
2. 实验要求 (1)
认真阅读与掌握与本实验相关得教材内容。
(2) 认真阅读与掌握本章相关内容得程序. (3)
上机运行程序。
(4)
保存与打印出程序得运行结果,并结合程序进行分析. (5)
按照您对线性表得操作需要,重新改写主程序并运行,打印出文件清单与运行结果 实验代码:
1) ) 头文件模块
#inc l ude i ostr eam 、h h 〉 // 头文件
#inc lud d e< mallo c、h h 〉 // 库头文件- - - -- — 动态分配内存空间
typ ed d ef f
i nt e lemtype ; // 定义数据域得类型
typede f
str uc c t
linknode// 定义结点类型
{ {
e e l em t ype dat a; // 定义数据域
s tr u ct l ink no o de e
*next ; // 定义结点指针
}n od d e type ;
2) 创建单链表
n od e ty p e * cr e ate ()/ / /建立单链表, , 由用户输入各结点 a data 域之值, ,
/ / /以 0 0 表示输入结束
{
elem t ype d ; // 定义数据元素 d d
nodetype * h=NU LL L , *s ,*t t ; // 定义结点指针
i i nt
i=1;
cou t <<" 建立一个单链表”〈 <end l;
whi le e (1 1 )
{
cou t
<<”
输入第”〈〈
i < 〈" " 结点 a data 域值:”;
c c i n 〉>
d;
if(d d ==0 )
bre ak k ;/ / /以 0 0 表示输入结束
if (i i ==1)// 建立第一个结点
{
h h =( nodetype * )m al l l oc(sizeof( n odetype)) ; // 表示指针h
h h- - >d a ta=d ;h h —> > ne xt =N UL L;t =h; //h就是头指针
} }
els e/ / /建立其余结点
{ {
s =( n odet y pe*) ma l loc(size of f ( node t ype )); ;
s- - >d ata = d;s — 〉 next =NU U LL ;t — >nex x t =s ;
t=s ;t //t 始终指向生成得 单链表得最后一个节点
}
i++ ;
}
retu r n h ;
} }
3)输出单链表中得元素
v oi d
disp ( node ty y pe*h h )// / 输出由h指向得单链表得所有daa ta 域之值
{
nodetype * p=h;
c ou t< < 〈”输出一个单链表 :"<<en dl<<”
";
i f(p== N ULL )co o ut t <〈”空表”;
w w h il e( p!=NU LL L )
{ {
cou t< < 〈p p- - 〉da ta< 〈 ”
” ;p p =p- - 〉 nex t;
} }
c c out t 〈<e e n dl ;
}
4 4 )计算单链表得长度
int len(no de ty p e *h)/ / /返回单链表得长度
{
int i =0 0 ;
nod d e type * p=h;
w w h ile(p!=NULL)
{ {
p p =p p — 〉 nex t ;i++ ;
}
re t urn
i i ;
} }
5) 寻找第 i i 个节点
node type
*find(n o detype *h , int i)// 返回第 i i 个节点得指针
{ {
nod e ty pe e
* p=h ;
i nt j=1 1 ;
if(i 〉l en ( h) | |i<=0)
r r e tu r n NUL L;/ / /i i 上溢或下溢 c c
els e
{ {
while ( p!=N ULL && & j〈 1)// 查找第 i i 个节点,并由 p p 指向该节点
{ {
j++; p =p- - 〉 next ;
} }
retu rn
p;
}
} }
6 6 )单链表得插入操作
n n ode e ty pe * i ns ( node typ p e
* * h ,i n t i , el e mtype
x x )// / 在单链表he e ad d 中第 第 i i 个节点
// / (i i 〉 =0) 之后插入一个 dat a域为 x x 得节点
{ {
nodetype * p,* s;
s =(nodet y pe *) ) m alloc(si z eo f( no d ety pe e )); // 创建节点 s s
s s — 〉d ata =x;s- >n e xt =N N U LL;
i i f( i==0)//i=0 :s s 作为该单链表得第一个节点
{ {
s — >nex t =h ;h =s;
}
else
{ { p= fi nd(h h ,i i )
;// 查找第 i i 个节点,并由 p p 指向该节点
if (p p !
=NUL L) )
{
s- - > next=p — 〉 ne xt t ;
p p — 〉 next=s;
} }
r r e tu r n h;
}
} }
7 7 )单链表得删除操作
node t ype * del ( nod et yp e
*h, int
i)// 删除第 i i 个节点
{ {
n odetype * p=h, *s s ;
int
j= = 1; ;
if (i= = =1 1 )//删除第 1 1 个节点
{ {
h= = h — >next ; free ( p) ;
} }
else
{ {
p p = fi n d(h ,i i -1 1 )
;// 查找第i-1 1 个节点, , 并由 p p 指向该节点
if(p != = NU U LL L & &p - >n e xt !
=NULL)
{
s =p -〉 next; //s s 指向要删除得节点
p p - >ne x t=s - >n e xt ;
free ( s) ;
} }
el l se
co ut t < <" 输入i得值不正确 ”< < < endl ;
}
retu r n h; ;
}
8 8 )释放节点空间
void di spose (n n o det y pe *h)// 释放单链表得所有节点占用得空间
{
no de typ e
*p p a =h ,*p b;
if (pa a !
=N UL L L) )
{ {
pb=p a — 〉n ex t; ;
if(pb= = NUL L)// / 只有一个节点得情况
fr e e( p a);
el s e
{ {
whil e
(p p b!=N N U LL )//有 两个及以上节点得情况
{ {
f f r ee ( pa );p p a =pb ; pb = pb — 〉 next ;
} }
free ( pa);
}
}
}
9 9 )主程序模块:
#i nc l ud e"s s li i nk、h h ”/ / /包含头文件 sli nk k
v v o id main( )
{
no de e typ p e
* hea d; // 定义节点指针变量
he ad d =c c reat t e () ; // 创建一个单链表
disp ( hea d); ; // / 输出单链表
c c out 〈 <" 单链表长度:”< < 〈l en(h ead d )〈〈end d l;
ins( h ea d, ,
2,0 ); // 在第二个节点之后插入以 0 0 为元素得节点
d isp ( he a d) ;// / 输出新链表
del (h h e ad ,2) ) ;/ / /删除第二个节点
d isp(he ad d ); // 输出新链表
}
5 5 。实验结果
建立一个单链表:
输入第 1 1 结点 d d aa ta 域值:1 1
输入第2结点 dat a域值:2 2
输入第 3 3 结点da ata 域值 :3
输入第 4 4 结点 da ta a 域值:4
输入第 5 5 结点da a ta域值 :5
输入第 6 6 结点 d d at t a域值:6
输入第 7 7 结点 d d at t a域值:7
输入第 8 8 结点 d d aa ta 域值:8
输入第9结点 d d at t a域值: : 9
输入第 0 10 结点 a data 域值0: :
输出一个单链表:
1
2
3 4 5 6
7 8
9
单链表长度:9 9
输出一个单链表:
1 0
2
3 4
5
6
7 8
9 9
输出一个单链表:
1 2 3 4 5 6 7 8
实验二
顺序栈得实现
1、实验目得 掌握顺序栈得基本操作:初始化栈、判栈空否、入栈、出栈、取栈顶数据元素等运算以及程序实现方法。
2、实验要求 (1)
认真阅读与掌握与本实验相关得教材内容。
(2) 分析问题得要求,编写与调试完成程序. (3)
保存与打印出程序得运行结果,并分析程序得运行结果。
3、实验内容
是就号括方、号括圆含包中式达表术算断判个一现实作操本基得栈用利ﻫ否正确配对得程序。具体完成如下:
(1)
定义栈得顺序存取结构。
(2) 分别定义顺序栈得基本操作(初始化栈、判栈空否、入栈、出栈等)。
(3)
定义一个函数用来判断算术表达式中包含圆括号、方括号就是否正确配对。其中,括号配对共有四种情况:左右括号配对次序不正确;右括号多于左括号;左括号多于右括号;左右括号匹配正确.
(4)
设计一个测试主函数进行测试。
(5) 对程序得运行结果进行分析. 实验代码:
#include <stdio、h >#ﻫ001 eziSxaM enifedﻫ
typedef struct {
int data[MaxSize];
int top; }SqStack; void InitStack(SqStack *st)
//初始化栈 {
;1—=pot>—tsﻫ}ﻫint StackEmpty(SqStack *st) //判断栈为空 {
;)1—==pot〉-ts( nruterﻫ}ﻫvoid Push(SqStack *st,int x)
//元素进栈
ﻫ{pot>-ts(fiﻫ==MaxSize-1)
printf("栈上溢出!\n");
esleﻫ{
ﻫ
st-〉top++;
;x=]pot〉-ts[atad>-tsﻫ
} }ﻫvoid Pop(SqStack *st)
//退栈
ﻫ{)1-==pot>-ts(fiﻫ
;)”n\出溢下栈"(ftnirpﻫ
esleﻫ
st—〉top-—; } int Gettop(SqStack *st)
//获得栈顶元素 {
if(st—〉top==—1) {
ﻫ
printf("栈空\n”);
;0 nruterﻫ
}
esleﻫ
return st—〉data[st->top]; } void Display(SqStack *st)
//打印栈里元素 {ﻫ
int i;
printf("栈中元素:");
for(i=st-〉top;i>=0;--i)
d%”(ftnirpﻫ",st->data[i]);
ﻫ;)"n\”(ftnirpﻫ}测// )(niam tniﻫ试
ﻫ{ ;L kcatSqSﻫ
;L&=ts* kcatSqSﻫ
nIﻫitStack(st);
;))ts(ytpmEkcatS,"n\d%:空栈"(ftnirpﻫ
)i++;01<i;1=i tni(rofﻫ
;)i,ts(hsuPﻫ
;)ts(yalpsiDﻫ
printf("退一次栈\n");
Pop(st);
printf("栈顶元素:%d\n",Gettop(st));
poPﻫ(st);
;)ts(yalpsiDﻫ
ﻫ};0 nruterﻫ
实验结果: :
实验三
串得基本操作与简程序 1。
实验目得 掌握串基本操作:初始化、联接、替换、子串等运算在堆分配存储储结构上得程序设计方法。
2. 实验要求 (1) 认真阅读与掌握与本实验相关得教材内容. (2)
认真阅读与掌握本章相关内容得算法并设计程序序。
(3)
上机运行程序。
(4) 保存与打印出程序得运行结果,并结合程序进行分析. 实验代码:
#inc l ude < stdio 、 h>
#d d e fi ne e
MaxSize 50
type d ef s tr u ct
{ {
ch h a r data [ Ma x Siz e];
// 存放字符串
int len gth h ;
// 字符串 长度
} SqString ;
// / 将一个字符串常量赋给串 s s
v oid
StrAssign(SqStr in n g
& s,c ha a r
c c st r[])
{
i i nt t
i i ;
for(i =0 ;cstr[i] != = '\ \ 0";i++ )
// / 这个'\ \0 0 '代表字符串结束标志, , 编译系统自动加上得
s、 dat a [i]=cs t r[i];
s s 、 len g th=i;
}
// 字符串得复制
vo i d StrCopy (S qStr i ng & s,S S q St ri i n g t)
{ {
in t i;
f or(i=0;i 〈t、le ngt h;i ++ )
s s 、d at a [i ] =t 、 data[i];
s、 le n gt h =t 、l ength ;
p p r intf( "字符串复制成功了\ \n n ”) ) ;
}
// 判断字符串就是否相等
vo id
St rEq q ual (SqStrin g
s s ,S qSt ri i n g t)
{
in t
i, s ame= 1;
if f (s s 、l ength!=t 、l en g th )
sa m e=0 ;
el se
{ {
for ( i= 0;i i 〈s s 、 length;i++ )
if( s、 da t a[i ] !=t 、da a ta a [i])
{
sa me e =0; ;
b reak ;
}
}
i f(same==0 )
p p rin n t f(" 这两个字符串不相等\ \ n" ); ;
else
p p r int f(" " 这两个字符串相等\ \n n ”) ) ;
}
/ / /字符串得长度
v oid
S trLe n gth(SqS tr r in n g
s)
{
pr in n tf f (”此字符串长度为:%d d\ \ n" ,s s 、l eng th) ); ;
}
// 合并字符串
Sq S tring Co n cat (S qString
s,Sq S tring t)
{ {
S qS t ri ng
s s tr;
in t
i i ;
s tr 、len gth=s 、 len g th+t 、l en gt t h;
for( i =0 ;i<s s 、 le n gt h; i++ )
str 、d d at t a[ i] =s s 、 data [i i ]; ;
for(i=0 ;i〈t t 、l eng t h;i++)
str 、da a ta a [s、l l e ngt h+ i] =t、 data [ i];
r eturn str;
}
/ / /求子字符串
void
SubStr (SqS S t ri n g s , in t
i i ,in n t
j)
{
SqStr i ng
st t r; ;
i nt
k;
s tr 、l l e ngth= 0;
i i fi (i 〈 =0| |i i〉 〉s s、 、 len gt t h| | | j<0 | |i+j- - 1> > s、le e ngth)
pri n tf(" 子字符串复制失败\n n " );
f or ( k= i- 1;k 〈 i+j- -1 1 ;k k ++ + )
st r、 dat a[k k —i i + 1]=s 、d d a ta[k] ;
str r 、l ength=j;
printf (" " 子字符串复制成功
长度为:
%d\ \ n", , j) ) ;
print f( ( ”下面输出此子字符串:\n n " );
f f or r (i =0 ;i <j ; i++)
pr r i ntf ( ” %c ”, st t r、 data[i ]) ) ;
printf(”\ \ n ” );
} }
// 插入字符串
S qStri n g I ns e rStr(S q Str ing
s1 , int i ,SqS tring s 2) )
{ {
int
j j ;
Sq S tr in n g
str;
s tr 、 length=0 ;
if (i i 〈= = 0|| i>s1 、 length+1)
{ {
pr in n tf f (”字符串插入失败\ n" ); ;
retu rn
str ;
} }
for ( j= 0; ; j <i- -1 1 ;j ++ )
str r 、d ata [j]= s1 、da ta[j];
for ( j=0; j〈s2 2 、 lengt h; j++)
s s tr r 、 dat a [i- -1 1 +j j ] =s2 、d d a ta[j ];
fo o r(j =i -1 1 ;j j <s s 1、l eng t h;j++ )
st r、 da ta [s2 、le ngt h +j] = s1 、 data [ j];
s tr 、 leng th h =s1 1 、 le ng th+ s2 2 、l l eng th ;
printf (" " 插入字符串成功
长度为:%d d\ \n n ”,s s tr、length );
retu r n st r; ;
}
/ / /删除字符串
Sq St ring DeleS tr( SqStri n g s , int i,i nt
)
j)
{
i nt k ;
Sq q St t ri i ng
s s tr r ;
s s tr r 、l eng th h = 0;
if ( i<=0 | |i>s 、l engt h|| i+ j >s 、 le ngt h+1)
{ {
pri i n tf ("字符串删除失败\n n ”);
return
str;
}
f f o r( k= = 0;k k 〈i i- - 1;k k + +)
s tr 、 da t a[k] =s s 、d ata [k ];
for ( k=i+j — 1;k〈s、 leng th h ; k++ )
s s tr、 data [k k -j ]=s 、 data[k ];
str 、 length=s 、l l e ngt h —j j ;
pri nt t f( ( "删除子字符串成功
剩余长度为: : %d d \ n", str 、 le n gth) ;
re tu rn str ;
}
// 替换字符串
voi d
R R ep Str(SqStr in g s,int
i i ,i nt t
j, S qString t)
{
i i nt t
k;
S S q String
str ;
s s tr、 length =0 0 ;
if(i<= 0||i i 〉s s 、 le ng th||i+j — 1>s 、l eng th h )
pri n tf (" " 字符串替换失败了\ \n n "); ;
f or(k=0;k <i i — 1; k++)
st r、 dat a [k ]= = s、dat t a[k k ];
for( k =0;k<t 、l l eng g th h ;k++ + )
str 、d at a[ i+k- - 1] =t 、d d a ta [k k ];
for ( k=i +j j -1; ; k <s 、 le n gt h; k++)
str 、d d ata [t t 、l ength+k- -j j ] =s 、d ata[k ];
s s tr、l l eng g t h= s、 le n gth- - j+t 、l l en n g th ;
p p ri i nt t f( ( ”替换字符串成功
新字符串长度为:%d d\ \n n ”,str 、 length) ;
}
// 字符串得输出
v oi d
Di sp St r( SqString
s s )
{
int i ;
if( s、le ng t h> 0) )
{
pri nt f("下面输出这个字符串\ \n n ") ) ;
fo r(i i = 0;i 〈s s 、le e ng g t h;i ++ + )
p p r intf(" %c",s、 da ta a [i]); ;
p ri nt t f( ( "\ \ n”) ;
} }
el se
print f("目前空字符串
无法输出\ n" );
} }
void main ()
{ {
S S qS S t ring s;
char a [] ] ={ { " we n
x x ian n
lia ng "} } ;
// 字符串常量a
St t rA ssig n(s s ,a);
D ispS t r(s );
StrL engt t h( s);
SqS tr r i ng
s s 1 ,s2,t;
1 //s1 就是待复制得字符串变量
pr r in n t f(" 请输入一个字符串t:\ \n n ”) ) ;
scan f (" %s s " ,t 、d ata );
StrAssi gn (t ,t t 、da a t a);
S S t rCopy(s1 ,t t );
// 复制字符串
St t rLe e ngth h ( s1) ;
Dis p Str(s 1) ) ;
p p r in t f("串 下面判断字符串 1 s1 串 与字符串 s s 就是否相等\n");
StrE q ua l(s s , s1) ;
printf(" 下面将字符串 s s 1与字符串 s s 合并一起\n" " );
Sq S trin g
str ;
s s tr r = Concat(s , s1) ;
// / 合并字符串
DispStr(st r);
StrLength ( str) ;
Su u bS tr ( st r, , 22 2 ,7 7 );
/ / /求子字符串
s s tr r = DeleS tr (st r ,1 5 ,4) ;
// 删除字符串
Di i sp p S tr ( st r); ;
St r Length ( str) ;
p p ri i n tf(" 请插入一个字符串s2 2\ \n n ”); ;
s s c anf ( ” %s ",s 2、d d at t a) ) ;
St r As s ig n (s2, s2、 dat a );
str= Ins e rS t r(s tr, 15 , s2 )
;
// / 插入字符串
D D i spS t r(st r);
Str L ength ( st r); ;
printf( "顺序字符串得基本运算到此结束了\ \ n”) ) ;
}
实验结果:
实验四
编程建立二叉树, 对树进行插入删除及遍历得程序
1、实验目得 (1)
进一步掌握指针变量得用途与程序设计方法。
(2)
掌握二叉树得结构特征,以及链式存储结构得特点及程序设计方法。
(3)
掌握构造二叉树得基本方法。
(4)
掌握二叉树遍历算法得设计方法. 3. 实验要求 (1)认真阅读与掌握与本实验相关得教材内容。
(2)掌握一个实际二叉树得创建方法. (3)掌握二叉链存储结构下二叉树操作得设计方法与遍历操作设计方法。
4。
实验内容 (1)定义二叉链存储结构. (2)设计二叉树得基本操作(初始化一棵带头结点得二叉树、左结点插入、右结点插入、中序遍历二叉树等)。
(3)按照建立一棵实际二叉树得操作需要,编写建立二叉树、遍历二叉树得函数. (4)编写测试主函数并上机运行。打印出运行结果,并结合程序运行结果进行分析。
实验代码: #i nclu d e<i os s t re am m 、h h >
t ypede f
s s t ruc t
bi t nod e{
ch h a r da a ta; ;
s tr uc t bitnod e
* * l chi l d, * rchi ld d ;
}bino de e ,* * b itre e;
void createbit r ee(bi tr e e *T){
ch ar c h;
c c i n>>ch ;
if(ch = ="0 ')
(*T )= NULL ;
else {
*(=)Tﻩ (*T)= ne w
b it n ode;
( *T)- -> > data= = ch;
crea t ebitree ( &( * T) — 〉l l c hild) ;
create bi tre e( ( &(*T T )
— 〉r r c hil d); ;
} }ﻩ}
void in n o rd e rout (b itr e e T) {
if (T ){
droniﻩ inord e ro u t(T- -> > lc c hild d ); ;
oc cﻩﻩ o ut <<T T- - >data < <end d l; ;
tuoredroniﻩﻩ inorderout (T- - 〉 rchi ld d );
} }ﻩ} }
void p os s t ord er r ( bitree T) {
if(T) {
po s torder(T- - >l c hi l d) ;
postor de e r (T — >r r c hil d) ) ;
cout<<T -〉 data 〈 <endl ;
}
}
in n t
countleaf ( bit r ee
bt ){
i i f( !bt)
erﻩ re t urn 0;
if f (b b t- >lc hi i ld ==N U LL&& bt t- - >rchild==NUL)
L)
ret urn n
1 1 ;
r r e turn ( c oun t lea f(bt- - 〉 lc hi i ld d )+ + co untl eaf (b b t- - >rc c hi ld )); ;
} }
voi d
m ai n( ( ){ {
b it ree
b t;
creat e bit r ee (&bt t );
in o rd er out( b t) ;
cou t <<" "< < 〈 endl ;
postorder ( bt) ;
countlea f( ( bt t );
}
实验五 建立有序表并进行折半查找 1、 实验目得 掌握递归算法求解问题得基本思想与程序实现方法. 2.实验要求)1(
.想思法算得验实本握掌与读阅真认ﻫ(2)编写与调试完成程序. (3)保存与打印程序得运行结果,并对运行结果进行分析。
3、实验内容 (1) 分析掌握折半查找算法思想,在此基础上,设计出递归算法与循环结构两种实现方法得折半查找函数. (2)
编写程序实现:在保存于数组得 1000个有序数据元素中查找数据元素x就是否存在。数据元素x要包含两种情况:一种就是数据元素 x 包含在数组中;另一种就是数据元素x 不包含在数组中 (3)
数组中数据元素得有序化既可以初始赋值时实现,也可以设计一个排序函数实现。
(4) 根据两种方法得实际运行时间,进行两种方法时间效率得分析对比。
实验代码: #include<stdio、h> #include<stdlib、h> #define MAX_LENGTH
100 typedef int KeyType;
typedef struct {
int key; }ElemType; typedef struct {
出空元单号 0 //
;]HTGNEL_XAM[mele epyTmelEﻩ
int length; }SSTable; int Search_Bin(SSTable ST,KeyType key) {
int low,high,mid;
low = 1;high = ST、length;
while(low <=high)
{
mid = (low+high)/2;
)yek、]dim[mele、TS== yek(fiﻩﻩ
ﻩ
return mid;
esleﻩ ﻩ
)yek、]dim[mele、TS〈yek(fiﻩ ﻩ
;1—dim = hgihﻩ ﻩﻩ
else
ﻩ
low=mid+1;
}
ﻩ
return 0; } void main() {
int i,result;
;TS elbaTSSﻩ ;yek epyTyeKﻩ printf("please input length:");
scanf("%d",&ST、length);
)++i;htgnel、TS=<i;1=i(rofﻩ {ﻩ
;)":mele、TS tupni esaelp"(ftnirpﻩ
scanf("%d",&ST、elem[i]);
}
printf("please input keyword:");
scanf("%d",&key);
result=Search_Bin(ST,key);
)0==tluser(fiﻩ
printf(”Don"t find\n");
esleﻩ
printf(”Find the key,the position is %d\n",result); } 实验结果:
实验六 建立一组记录并进行插入排序 1、 实验目得 (1)
掌握插入排序算法得思想. (2)
掌握顺序队列下插入排序算法得程序设计方法。
2、 实验要求 )1(
。想思得法算序排入插中材教握掌与读阅真认ﻫ(3) 编写基于顺序队列得插入排序排序算法并上机实现。
3、 实验内容 (1) 编写基于顺序队列得插入排序函数。
(2) 设计一个测试主函数,实现对基于顺序队列结构得插入排序算法得测试. (3)
分析程序得运行结果。
实验代码: #include〈stdio、h> #include〈stdlib、h> #define MAXSIZE 100 typedef struct
{
int key; }sortkey; typedef struct {
sortkey elem[MAXSIZE];
int length; }sortelem; void InsertSort(sortelem *p) {
int i,j;
for(i=2;i<=p-〉length;i++)
{
if(p->elem[i]、key<p->elem[i-1]、key)/*小于时,需将 elem[i]插入有序表*/
{
p—>elem[0]、key=p—>elem[i]、key; /*为统一算法设置监测*/
for(j=i—1;p->elem[0]、key〈p->elem[j]、key;j—-)
p->elem[j+1]、key=p—〉elem[j]、key;/*记录后移*/
p-〉elem[j+1]、key=p->elem[0]、key; /*插入到正确位置*/
}
} } void main() {
sortelem *p; int i; int b[6]={45,23,54,6,4,46}; p=(sortelem *)malloc(sizeof(sortelem)); p—〉length=0; for(i=1;i<7;i++)
{
p—>elem[i]、key=b[i—1];
p->length++; } InsertSort(p); for(i=1;i<7;i++) {
printf(”%d
",p—>elem[i]、key); } system("pause"); } 实验结果:
实验七
建立一组记录并进行快速排序 1、 实验目得 (1)
掌握快速排序算法得思想. (2) 掌握顺序队列下快速排序算法得程序设计方法。
2、 实验要求 )1(
。想思得法算序排速快中材教握掌与读阅真认ﻫ(3)
编写基于顺序队列得快速排序排序算法并上机实现。
3、 实验内容 (1) 编写基于顺序队列得快速排序函数。
(2) 设计一个测试主函数,实现对基于顺序队列结构得快速排序算法得测试. (3)
分析程序得运行结果。
实验代码: #include〈iostream、h〉 void quick_sort(int a[],int low, int high)
{
int i,j,pivot;
if (low < high)
{
pivot = a[low];
i = low;
j = high;
while (i < j)
{
//从顶端开始比较值,如果小于标准值,停止
while (i < j && a[j] >= pivot)
{
j--;
}
//将比 pivot 小得元素移到低端,下标加加
if (i < j)
a[i++] = a[j];
//从底端开始比较值,如果大于标准值,停止
while (i < j && a[i] <= pivot)
{
i++;
}
//将比 pivot 大得元素移到顶端,下标减减
if (i 〈 j)
a[j--] = a[i];
}
//pivot 移动到最终位置
a[i] = pivot;
//对左区间进行递归排序
quick_sort(a, low, i—1);
//对右区间进行递归排序
quick_sort(a, i+1, high);
}
}
void print_array(int a[], int n)
{
for(int i = 0; i 〈 n; i++)
{
cout <〈 a[i] 〈< ",";
}
}
int main()
{
int data[9] = {54,38,96,23,15,72,60,45,83};
quick_sort(data, 0, 8);
print_array(data,9);
return 0;
}
实验结果:
- 范文大全
- 职场知识
- 精美散文
- 名著
- 讲坛
- 诗歌
- 礼仪知识
-
超星尔雅学习通《对话大国工匠致敬劳动模范》题库附答案
超星尔雅学习通《对话大国工匠致敬劳动模范》题库附答案 1、历史只会眷顾坚定者、奋进者、搏击者,而不会
【入党申请书】 日期:2021-05-12
-
对于政治生态考核整改工作方案
本文系作者原创投稿,仅供学习参考,请勿照搬照抄! 关于政治生态考核整改工作的方案 为做好推进风清气正
【经济工作】 日期:2020-06-05
-
大学生学习2024年两会精神心得感悟
大学生学习2024年两会精神心得感悟过去一年,是全面贯彻二十大精神的开局之年,中国共产党带领全国各族人民,付出艰辛努力,换来重大成
【心得体会】 日期:2024-03-07
-
中国传统故事英文版 中国古代故事英文版
历史学科蕴含着许多丰富的、生动的、有趣的素材,每一个历史事件、历史人物都有相关的、动人的历史小故事,都能给人以启迪。你对中国古代的故事了解多少呢?下面是小编为您...
【调查报告】 日期:2019-05-22
-
基尔霍夫定律验证实验报告
基尔霍夫定律的验证的实验报告本文关键词:基尔,定律,霍夫,验证,实验基尔霍夫定律的验证的实验报告本文
【思想宣传】 日期:2021-03-08
-
中小学党建工作实施意见
中小学党建设工作实施意见中小学校担负着培养德智体美全面发展的社会主义建设者和接班人的重要使命。加强中
【爱国演讲】 日期:2020-09-22
-
地藏经诵读仪规(完整版)
地藏经诵读仪规(完整版) 恭请文: 恭请大慈大悲大愿地藏王菩萨、护法诸天菩萨慈悲加持护念弟子***能
【个人简历】 日期:2021-03-31
-
青年学生学习全国人大十四届二次会议心得感想16篇
青年学生学习全国人大十四届二次会议心得感想16篇报告中提到政府在经济调控、消费政策、基础设施和制造业投资、房地产调控以及地方债务
【心得体会】 日期:2024-03-07
-
材料力学考题
材料力学考题本文关键词:材料力学,考题材料力学考题本文简介:材料力学1、简易起重设备中,AC杆由两根
【入党申请书】 日期:2021-03-06
-
2022读懂中国五老事迹征文5篇
2022读懂中国五老事迹征文5篇 放军经过两天的拼搏,到了马垅都筋疲力尽,马垅村的村民纷纷拿出自家的伙食到榕树下给解放军们食用,
【征文演讲】 日期:2022-07-07
-
执行信息公开网
执行信息公开网 执行信息公开网 执行信息公开网: zhi*ing (点击下图可直接进行访问) 全国
【职场知识】 日期:2020-07-03
-
年国家开放大学电大电子商务单选题题库
单选: 1、EDI是指A、电子商务B、电子数据交换C、电子交易 D、移动数据交换 答案: B 2、电
【职场知识】 日期:2020-06-05
-
有机磷酸酯类中毒及其解救(实验报告范文)
有机磷酸酯类中毒及其解救XXX、XXX一、实验目的1 观察有机磷酸酯类农药敌百虫中毒时的症状。 2
【职场知识】 日期:2020-08-30
-
“以学生为中心”的教学原则
以学生为中心的教学原则教师在开展以学生为中心的教学实践中,必须谨记学习目标不再是知识的获得,能力要比知识更重要。以下是蒲公英阅读网
【职场知识】 日期:2023-01-05
-
大学教师毕业设计指导记录4篇
大学教师毕业设计指导记录4篇 毕业设计是指工、农、林科高等学校和中等专业学校学生毕业前夕总结性的独立作业。是实践性教学最后一
【职场知识】 日期:2022-05-11
-
2021教育基础知识试题(附答案)
2021教育基础知识精选试题(附答案) 1、主张恢复西方传统教育核心价值,反对“进步教育
【职场知识】 日期:2021-03-17
-
男一分钟仰卧起坐标准表
表表11--13 男生一分钟仰卧起坐、引体向上单项评分表(单位:次) 等级 单项 得分 三年级 四年
【职场知识】 日期:2021-05-08
-
“从青风公司审计案例看销售与收款循环审计”案例说明书
“从青风公司审计案例看销售与收款循环审计”案例说明书一、本案例要解决的关键问
【职场知识】 日期:2020-09-28
-
机械加工创业项目_加工小本创业项目
现在在加工创业项目办小本加工厂有哪些?有什么项目推荐,下面这些小本加工厂项目个个都适合一个人创业,来看看吧!以下是小编分享给大家的关于,一起来看看加工小本创业项目吧!...
【职场知识】 日期:2020-03-19
-
发展党员工作部门联审征求意见表
发展党员工作部门联审征求意见表发展对象姓 名 性别 出生年月 身份证号 现工作单位及职务 家庭住址
【职场知识】 日期:2020-09-22
-
唐代诗人李昂个人信息
唐代诗人李昂个人信息 导读:我根据大家的需要整理了一份关于《唐代诗人李昂个人信息》的内容,具体内容:
【古典文学】 日期:2020-11-07
-
[关于中秋的朗诵诗词] 关于爱国的朗诵诗词
中秋,热闹的街头树起了灯彩,舞起了火龙。你知道多少关于中秋的朗诵诗词?下面小编为你整理了几篇关于中秋的朗诵诗词,希望对你有帮助。 关于中秋的朗诵诗词一 中秋佳节...
【古典文学】 日期:2019-06-06
-
叠加原理实验报告
一、实验目的1、通过实验来验证线性电路中的叠加原理以及其适用范围。 2、学习直流仪器仪表的测试方法。
【古典文学】 日期:2020-11-12
-
大气唯美黑板报【国庆节大气黑板报】
日本在投降的那一天,再也没有昔日的嚣张,我们中国的屈辱得到洗刷。下面就随小编看看国庆节大气黑板报内容,希望喜欢哦。 国庆节大气黑板报图片欣赏 国庆节大气黑板报...
【古典文学】 日期:2019-05-05
-
怎样认识世界处于百年未有之大变局
怎样认识世界处于百年未有之大变局 首先,“大变局”是对国际格局发生巨大变迁的
【古典文学】 日期:2020-10-28
-
输血查对制度
输血查对制度依据卫生部《临床输血技术规范》的要求,制订抽血交叉配备查对制度、取血查对制度、输血查对制
【古典文学】 日期:2020-09-24
-
【二人旅游英语情景对话】 二人英语对话2分钟旅游
随着国内外旅游业市场的不断扩大,旅游英语人才成为社会的紧缺人才。小编精心收集了二人旅游英语情景对话,供大家欣赏学习! 二人旅游英语情景对话1 A:Itsmyfirsttimeto...
【古典文学】 日期:2020-02-29
-
法律知识手抄报图片大全|法律知识手抄报
我国开展了全面的普法宣传工作,法制宣传教育、普及法律常识作为经常的重要任务。做法制教育手抄报,普及法律知识。下面是小编为大家带来的法律知识手抄报图片大全,希望大家...
【古典文学】 日期:2020-03-10
-
2021公安专业知识考试练习题(附答案)
2021公安专业知识考试练习题(附答案) 1 甲地公安机关接到群众举报,在当天举行的大型娱乐活动中,
【古典文学】 日期:2021-01-29
-
乳糖检测方法
附录A(规范性附录) 乳糖的测定A 1原理牛乳或乳粉样液经沉淀剂澄清后,样液中的乳糖在苯酚、氢氧化钠
【古典文学】 日期:2020-12-08
-
时尚女装店面装修效果图|韩式女装店面装修
在服装店的设计之中,我们要将多变、创新、品牌自身的定位与发展趋势相结合,用一种可持续的设计方式呈现出来,以便更加适应不断更新的展示主体。下面小编就为大家解开时尚女装店...
【中国文学】 日期:2019-05-16
-
2021年超星尔雅学习通《辩论与修养》章节测试试题(共183题附答案)
2021年超星尔雅学习通《辩论与修养》章节测试试题(共183题附答案)1、辩论的目的不是单纯获得某种
【中国文学】 日期:2021-05-12
-
【世界上最大的半岛】阿拉伯半岛
你知道世界上最大的半岛是什么吗?下面由小编来介绍一下。 阿拉伯半岛的简介 阿拉伯半岛(阿拉伯文:)位于亚洲,是世界上最大的半岛。沙特阿拉伯、也门、阿曼、阿拉伯联合...
【中国文学】 日期:2019-05-24
-
信息技术重要性
信息技术的重要性 信息技术与课程整合将带来课程内容的革新,信息技术的高速发展,要求传统的课程必须适应
【中国文学】 日期:2021-02-11
-
天地人格最佳搭配起名技巧|天地人格的五行怎么算
天地有阴有阳,物体刚柔表里,而数字则有一个诱导力,那么你知道怎么计算天地人格来取名吗?今天小编为你整理了天地人格最佳搭配起名技巧,一起来看看用天地人格取名的方法有哪些...
【中国文学】 日期:2019-06-06
-
雪天安全行车注意事项_雪天安全行车提示语
维护城市交通秩序,争做河源文明市民。你们想看看雪天安全行车提示语有哪些吗?以下是小编推荐雪天安全行车提示语给大家,欢迎大家阅读! 安全行车温馨提示语【经典篇】 1...
【中国文学】 日期:2020-03-15
-
2022年当前世界下中国面临国际形势论文范本
和平与发展仍然是当今时代的主题。谋和平、求合作、促发展是各国人民的共同愿望。为了大家学习方便,下面是小编为大家整理的当前世界下中国面临的国际形势论文范文内容,以供参...
【中国文学】 日期:2022-03-31
-
古代人物漫画女生唯美图片欣赏 漫画人物图片女孩唯美
中国漫画始于清末民初,而平面设计虽然其名称是在改革开放以后确立的,但设计活动却自古就有,二者的相互影响是本文的主要讨论范围。小编整理了唯美古代女生人物漫画,欢迎阅读!...
【中国文学】 日期:2020-03-19
-
小数乘法计算方法
小数乘法得计算方法理解小数乘法计算得法则,能够比较熟练得进行小数乘法笔算与简单得口算重点掌握小数乘法
【中国文学】 日期:2020-12-22
-
爱情的英语作文|关于爱情的英语作文
爱情的英语作文,书写了世界上伟大的爱情。下面是小编给大家整理的爱情的英语作文的相关知识,供大家参阅! 爱情的英语作文篇1 Loveisthemostbeautifulthingintheworld,i...
【中国文学】 日期:2020-03-10
-
山东省生产经营单位安全生产主体责任规定(303号令)
山东省生产经营单位安全生产主体责任规定(2013年2月2日山东省人民政府令第260号公布根据2016
【外国名著】 日期:2020-10-22
-
改革开放大事记简表(改革开放新时期1978-2012年)
改革开放大事记简表 (1978-2012年) 时间1978年12月18日至22日地点北京事件党的十一
【外国名著】 日期:2021-06-17
-
大学生音乐欣赏论文 大学音乐鉴赏论文3000
今天小编就为你介绍关于大学生音乐欣赏论文,下面是!小编给你搜集了相关资料!希望可以能帮助到大家。 大学生音乐欣赏论文—第一篇 音乐是生活不可缺少的一部分,学会欣...
【外国名著】 日期:2019-05-27
-
材料力学金属扭转实验报告
材料力学金属扭转实验报告 【实验目的】 1、验证扭转变形公式,测定低碳钢的切变模量G。;测定低碳钢和
【外国名著】 日期:2020-11-27
-
长豆角家常做法怎么做好吃营养 炒豆角的家常做法
豆角在我们日常生活中是很常见的食材,可能我们只知道它含有优质蛋白和维生素,其实它还有其他的营养价值。它也是可以和很多食材做搭配的。下面小编为大家整理了长豆角的做法...
【外国名著】 日期:2020-02-26
-
坚定不移全面从严管党治警研讨发言稿
坚定不移全面从严管党治警研讨发言稿政治建警、从严治警是党在新时代的建警治警方针。一年前的全国公安工作
【外国名著】 日期:2020-09-18
-
植物装饰画黑白图片欣赏|荷花装饰画黑白图片
装饰画是一种装饰性艺术,是装饰性和创造性相结合的艺术设计形式。小编整理了植物装饰画黑白,欢迎阅读! 植物装饰画黑白图片展示 植物装饰画黑白图片1 植物装饰画黑白...
【外国名著】 日期:2019-05-31
-
白烛葵的花语:白烛葵的不死幻想症
白烛葵,花名,花语为“不感兴趣”。现又指《知音漫客》上连载漫画《极度分裂》里主要角色之一。下面小编为你整理了白烛葵的花语。欢迎阅读。 白烛葵的花语:不感兴趣 ...
【外国名著】 日期:2019-05-11
-
(新版)就业知识竞赛题库及答案解析
(新版)就业知识竞赛题库(全真题库) 一、单选题1 (单选):在职业生涯规划工具中,组织在展开员工职
【外国名著】 日期:2021-07-21
-
[10.1旅游去哪里好玩] 旅游去哪里好玩
十月一到,秋意已在一个我们不经意的黎明走来,习习凉风,却是最适合出门游行。小编为您整理了10 1旅游去哪里好玩,秋天,我们一起出发吧。 1、云南建水古城 建水古城...
【外国名著】 日期:2020-03-01
-
梧桐花的花语|梧桐花的功效与作用
梧桐花为梧桐科植物梧桐的花,植物形态详梧桐子条。今天小编为你整理了梧桐花的花语,欢迎阅读。 梧桐花的花语是:情窦初开 在春季里晚开的花朵,有着恬淡的气息。 ...
【寓言童话】 日期:2020-03-03
-
西部计划笔试题库(99题含答案)
西部计划笔试题库(99题含答案) 1 第十三届全国人大三次会议表决通过了《中华人民共和国民法典》,自
【寓言童话】 日期:2021-06-16
-
大学生音乐欣赏论文 大学音乐鉴赏论文3000
今天小编就为你介绍关于大学生音乐欣赏论文,下面是!小编给你搜集了相关资料!希望可以能帮助到大家。 大学生音乐欣赏论文—第一篇 音乐是生活不可缺少的一部分,学会欣...
【寓言童话】 日期:2020-03-12
-
年学生资助诚信教育主题活动方案
各二级学院(部): 为深入贯彻落实习近平总书记关于教育的重要论述,落实立德树人根本任务,增强当代大学
【寓言童话】 日期:2020-06-21
-
主题教育调查研究工作方案2篇
主题教育调查研究工作方案1根据省、市、县开展“不忘初心、牢记使命”主题教育工
【寓言童话】 日期:2021-03-19
-
油管、套管规格尺寸对照表
API油管规格及尺寸 公称尺寸(in) 不加厚外径(mm) 不加厚内径(mm) 加厚外径(mm) 加
【寓言童话】 日期:2020-08-31
-
惊悚鬼故事50字 令人惊悚的故事
这些惊悚故事在短短的篇幅和时间之内让您感受到故事里传达出来的恐怖感,令你感到害怕。下面就是小编给大家整理的令人惊悚的故事,希望对你有用! 令人惊悚的故事篇1:学校...
【寓言童话】 日期:2019-05-13
-
北京最好吃的自助餐厅 北京高档自助餐排名
自助餐简直就是拯救大胃王的最佳饮食!没有之一!世界上没有什么事情是吃一顿自助餐解决不了的,如果有,那就吃两顿!下面小编给大家推荐北京几家好吃的自助餐。 北京最好吃的...
【寓言童话】 日期:2020-02-25
-
【古代男生漫画图片大全】男生漫画头像
漫画和动画组成了动漫产业的两大支柱。然而,与动画相比,漫画在业界和学界皆相对冷清。小编整理了古代男生漫画,欢迎阅读! 古代男生漫画图片展示 古代男生漫画图片1 ...
【寓言童话】 日期:2019-05-27
-
廉洁自律自我剖析材料(精选)
廉洁自律自我剖析材料((精选多篇)) 信念。科学文化,提高自身素质的终身学习的意识,紧密联系群众,调
【寓言童话】 日期:2020-07-20
-
学生高考动员演讲稿
学生高考动员演讲稿3篇高考动员演讲稿11 老师们、同学们: 大家下午好!漫漫高考长征路已经进入尾声了
【百家讲坛】 日期:2021-09-22
-
企业安全演讲稿2021
最新企业安全的演讲稿5篇 演讲稿是作为在特定的情境中供口语表达使用的文稿。在充满活力,日益开放的今天
【百家讲坛】 日期:2021-09-22
-
XX镇扶贫项目实施专项整治工作总结_1
XX镇扶贫项目实施专项整治工作总结 为深入贯彻精准扶贫精准脱贫基本方略,认真落实党中央、国务院,省委
【百家讲坛】 日期:2021-09-22
-
对乡镇领导班子干部成员批评意见例文
对乡镇领导班子干部成员的批评看法范文 一、对党委书记XXX同志的批评看法〔3条〕 1、与干部交流偏少
【百家讲坛】 日期:2021-09-22
-
群英乡扶贫资金项目芬坡村祖埇村生产道路硬化工程绩效自评报告
群英乡扶贫资金项目((芬坡村祖埇村生产道路硬化工程))绩效自评报告 一、基本情况(一)群英乡扶贫资金
【百家讲坛】 日期:2021-09-22
-
党委书记警示教育大会上讲话2021汇编
党委书记在警示教育大会上的讲话55篇汇编 党委书记在警示教育大会上的讲话(一) 同志们: 根据省州委
【百家讲坛】 日期:2021-09-22
-
对于2021年召开巡视整改专题民主生活会对照检查材料
关于12021年召开巡视整改专题民主生活会对照检查材料 按照中央巡视组要求和省、市、区委统一部署,区
【百家讲坛】 日期:2021-08-14
-
消防安全知识培训试题.doc
消防安全知识培训试题姓名: 部门班组: 成绩: 一:填空题,每空4分,共44分。 1、灭火剂是通过隔
【百家讲坛】 日期:2021-08-14
-
涉疫重点人员“五包一”居家隔离医学观察工作流程
涉疫重点人员“五包一”居家隔离医学观察工作流程 目前,全球疫情仍处于大流行状
【百家讲坛】 日期:2021-08-14
-
疫情防控致全体师生员工及家长一封信
疫情防控致全体师生员工及家长的一封信 各位师生员工及全体家长朋友: 暑假已至,近期我省部分地方发现确
【百家讲坛】 日期:2021-08-14