陕西高等教育自学考试.docx
- 文档编号:26414544
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:15
- 大小:133.02KB
陕西高等教育自学考试.docx
《陕西高等教育自学考试.docx》由会员分享,可在线阅读,更多相关《陕西高等教育自学考试.docx(15页珍藏版)》请在冰豆网上搜索。
陕西高等教育自学考试
陕西省高等教育自学考试
《计算机软件基础》课程
实践环节考核报告
准考证号:
010*********考生姓名:
张小飞
所在专业:
通信工程专业层次:
本科
考核地点:
西安电子科技大学考核时间:
2010年5月16日
考核桌(机)号:
同组考核者姓名:
实践考核评语及成绩评定(由教师填写)
教师签名:
年月日
主考院校:
西安电子科技大学
一、实验名称:
链表的插入和删除
二、目的与要求:
线性表是最简单、最常用的一种数据结构。
其逻辑结构是数据元素的有序序列:
(aa…………….a)。
三、具体题目:
#include
#include"malloc.h"
#include
#defineM5
#defineCHA0////插入位置
#definedel1///删除位置
#defineNULL0
voidmain()
{
//printf("helloword!
");
typedefstructnode
{
chardata;structnode*link;
}NODE;
NODE*FR[5];///数据结构的定义
for(intj=0;j<5;j++)
{
FR[j]=(NODE*)malloc(sizeof(NODE));
}
/*NODE*FR1;
NODE*FR2;
NODE*FR3;
NODE*FR4;*/
///初始化链表的定义
FR[0]->data='A';
FR[1]->data='B';
FR[2]->data='C';
FR[3]->data='D';
FR[4]->data='E';
////////////////////向数据区写入字符
printf("//////////////////////////////////////////////////////////////\n");
printf("这是单链表简单实验\a\n");
printf("//////////////////////////////////////////////////////////////\n");
for(inti=0;i<5;i++)
{
//printf("%s",FR[i]->data);
printf("这是第%d个元素:
%c\n",i+1,FR[i]->data);
}//显示链表的元素
///////
NODE*head,*P;
P=(NODE*)malloc(sizeof(NODE));
head=FR[0];
for(ints=0;s { FR[s]->link=FR[s+1]; } FR[M]->link=NULL; ////建立连接的过程 ///test ////printf("thisisatest%c\a\n",FR[0]->link->link->data); ///插入 charX; X='m'; if(CHA==0) {P->data=X; P->link=head; head=P; } printf("第一个插入元素为: %c\a\n",head->data); head->link=FR[del+1]; free(FR[del]); printf("删除B显示下一个元素: %c\a\n",head->link->data); for(intf=0;f<5;f++) { delete(FR[i]); } } #include #include #defineMAXSIZE50 /*typedefstruct//定义排序表的结构 { intelemword[MAXSIZE];//数据元素关键字 intlength;//表中当前元素的个数 }SqList; voidInitialSqList(SqList&L,intR[],intn) {//表初始化 inti; L.length=n; for(i=1;i<=L.length;i++) L.elemword[i]=R[i-1]; }*/ voidSelectSort(intR[],intn)//选择排序,升序 {//对记录序列R[0..n-1]作简单选择排序 intmin; intj; for(inti=0;i {//选择第i小的记录,并交换 j=i; min=R[i]; for(intk=i;k {//在R[i..n-1]中选择最小的记录 if(R[k] { min=R[k]; j=k; } } if(i! =j) {//与第i个记录交换 inttemp=R[i]; R[i]=R[j]; R[j]=temp; } } }//SelectSort voidBubbleSort(intR[],intn)//冒泡排序,升序 {//设待排记录放在R[0]到R[n-1]中 for(inti=0;i for(intj=0;j if(R[j]>R[j+1])//交换元素,每次寻找最大的让其沉底 { inttemp=R[j+1]; R[j+1]=R[j]; R[j]=temp; } }//BubbleSort voidBiInsertionSort(intR[],intn)//折半插入排序,升序 { intlow,high,temp,m; for(inti=1;i { temp=R[i];//将R[i]暂存到temp low=0; high=i-1; while(low<=high)//在R[0..i-1]中折半查找插入位置 { m=(low+high)/2;//折半 if(temp high=m-1;//插入点在低半区 else low=m+1;//插入点在高半区 } for(intj=i-1;j>high;j--) R[j+1]=R[j];//记录后移 R[high+1]=temp;//插入 }//for }//BInsertSort intSeqSearch(intR[],intn,intm)//顺序从前往后查找 { for(inti=0;i { if(R[i]==m) returni+1; } return-1;//找不到则返回-1 } intBiSearch(intR[],intn,intm)//折半查找 { intlow,high,mid; low=0; high=n-1; while(low<=high) { mid=(low+high)/2; if(R[mid]==m) returnmid+1; if(m>R[mid]) low=mid+1; else high=mid-1; } return-1;//找不到则返回-1 } intPartition(intR[],intlow,inthigh) { intpivotkey=R[low];//枢轴 while(low { while((low high--; R[low]=R[high]; while((low low++; R[high]=R[low]; } R[low]=pivotkey; returnlow;//返回枢轴所在位置 }//Partition voidQSort(intR[],ints,intt) {//对记录序列R[s..t]进行快速排序 if(s {//长度大于1 intpivotloc=Partition(R,s,t);//对R[s..t]进行一次划分 QSort(R,s,pivotloc-1);//对低子序列递归排序,pivotloc是枢轴位置 QSort(R,pivotloc+1,t);//对高子序列递归排序 } }//QSort voidHeapAdjust(intR[],ints,intm) { //已知R[s..m]中除R[s]之外均满足堆的定义,本函数调整R[s] //使R[s..m]成为一个大顶堆 intj,rc; rc=R[s]; for(j=2*s;j<=m;j*=2)//沿关键字叫大的结点向下筛选 { if(j ++j;//j为关键字较大的记录的下标 if(rc>=R[j]) break;//rc应插入在位置s上 R[s]=R[j]; s=j; } R[s]=rc;//插入 } voidHeapSort(intR[],intn) { //对顺序表R做堆排序 inti,t; for(i=n/2;i>0;--i)//把R[1..n]建成大顶堆 HeapAdjust(R,i,n); for(i=n;i>1;--i) {//大顶堆 t=R[1];//将堆顶记录和当前未经排序子序列R[1..i] R[1]=R[i];//中的最后一个记录相互交换 R[i]=t;//此交换将最大元素放在末尾,即取出堆顶元素 HeapAdjust(R,1,i-1);//将R[1..i-1]重新调整为大顶堆 } } voidmain() { charnext='y'; intn,i,m2; int*num; int*num2; int*num3; cout<<"请输入元素个数: "< cin>>n; num=newint[n]; num2=newint[n]; num3=newint[n+1]; cout<<"请依次输入每个元素: "< for(i=0;i cin>>num[i]; cout<<"您输入的元素为: "< for(i=0;i cout< cout< for(i=0;i num2[i]=num[i]; cout<<"选择排序: "< SelectSort(num2,n); for(i=0;i cout< cout< for(i=0;i num2[i]=num[i]; cout<<"冒泡排序: "< BubbleSort(num2,n); for(i=0;i cout< cout< for(i=0;i num2[i]=num[i]; cout<<"折半插入排序: "< BiInsertionSort(num2,n); for(i=0;i cout< cout< for(i=0;i num2[i]=num[i]; cout<<"快速排序: "< QSort(num2,0,n-1); for(i=0;i cout< cout< for(i=0;i num3[i+1]=num[i]; cout<<"堆排序: "< HeapSort(num3,n); for(i=0;i cout< cout< cout<<"您输入的元素为: "< for(i=0;i cout< cout< while(next! ='n') { cout<<"请输入要查找的元素: "< cin>>m2; cout<<"顺序查找(原始序列): "< cout<<"顺序查找(排序序列): "< cout<<"折半查找(排序序列): "< cout<<"继续? (y/n): "< cin>>next; } cout<<"任意键退出"< getch(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 陕西 高等教育 自学考试