陕西高等教育自学考试(20201207205635)_第1页
陕西高等教育自学考试(20201207205635)_第2页
陕西高等教育自学考试(20201207205635)_第3页
陕西高等教育自学考试(20201207205635)_第4页
陕西高等教育自学考试(20201207205635)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 陕西省高等教育自学考试 计算机软件基础课程 实践环节考核报告 准考证号: 010407220039考生姓名:张小飞 所在专业: 通信工程专业层次:本科 考核地点:西安电子科技大学考核时间:2010年5月16日 考核桌(机)号: 同组考核者姓名: 实践考核评语及成绩评定(由教师填写) 教师签名: 年 月日 主考院校:西安电子科技大学 链表的插入和删除 二、 目的与要求: 其逻辑 线性表是最简单、 最常用的一种数据结构。 结构是数据元素的有序序列:(aa .a)。 三、 具体题目: #include #includemalloc.h #include #define M 5 #define CH

2、A 0 /插入位置 #define del 1/删除位置 #define NULL 0 void main() /printf(hello word!); typedef struct node char data;struct node *link; NODE; NODE *FR5;/ 数据结构 的定义 for(int j=0;jdata=A; FR1-data=B; FR2-data=C; FR3-data=D; FR4-data=E; / 向数据区写入字符 printf(/n); printf( 这是单链表 简单实验 an); printf(/n); for(int i=0;idata)

3、; printf( 这是第 %d 个元素: %cn,i+1,FRi-data); / 显示链表 的元素 / NODE *head,*P; P=(NODE *)malloc(sizeof(NODE); head=FR0; for(int s=0;slink=FRs+1; FRM-link=NULL; /建立连接 的 过程 /test /printf(this is a test %can,FR0-link-link-data); /插入 char X; X=m; if(CHA=0) P-data=X; P-link=head; head=P; printf( 第一个插入元素为: %can,hea

4、d-data); head-link=FRdel+1; fee(FR【de_) pinff(=崖那 Bfeffl引 T-l洲- fo(inflr075T+) de_e(D(FR=) IB- k- -ZEI- .n;D*r.uu:E 5nL.M.aJ-ILd lMMai. *!. vAS/y 盂工f-mrsBSIZR-Ti 列 琴c-ude Aiosfream.hv 琴 c-ude Aconiphv 甘define MAXS_ZE 50 /*typedef struct / 定义排序表的结构 int elemwordMAXSIZE; / 数据元素关键字 int length; / 表中当前元素的

5、个数 SqList; void InitialSqList(SqList L.length = n; for(i = 1; i = L.length; i+) L.elemwordi = Ri-1; */ void SelectSort (int R, int n)/ 选择排序 ,升序 / 对记录序列 R0.n-1 作简单选择排序 int min; int j; for (int i = 0; i n; i+) / 选择第 i 小的记录,并交换 j = i; min = Ri; for (int k = i; k n; k+) / 在 Ri.n-1 中选择最小的记录 if (Rk min) m

6、in = Rk; j = k; if (i != j) / 与第 i 个记录交换 int temp = Ri; Ri = Rj; Rj = temp; / SelectSort void BubbleSort (int R, int n)/ 冒泡排序 ,升序 /设待排记录放在R0到Rn-1中 for(int i = 0; i n; i+) for(int j = 0; j Rj+1) / 交换元素 ,每次寻找最大的让其沉 底 int temp = Rj+1; Rj+1 = Rj; Rj = temp; / BubbleSort void BiInsertionSort (int R, int

7、n) /折半插入排序 ,升序 int low, high, temp, m; for (int i = 1; i n; i+) temp = Ri; / 将 Ri 暂存到 temp low = 0; high = i - 1; while (low = high)/ 在 R0.i-1 中折半查找插入位置 m = (low + high) / 2;/ 折半 if (temp high; j-) Rj + 1 = Rj; / 记录后移 Rhigh + 1 = temp;/ 插入 / for / BInsertSort int SeqSearch (int R, int n, int m) /顺序从

8、前往后查找 for (int i = 0; i n; i+) if (Ri = m) return i+1; return -1; /找不到则返回 -1 int BiSearch (int R, int n, int m) /折半查找 int low, high, mid; low = 0; high = n - 1; while (low Rmid) low = mid + 1; else high = mid - 1; return -1; /找不到则返回 -1 int Partition (int R, int low, int high) int pivotkey = Rlow; /

9、枢轴 while (low high) while (low = pivotkey) / 从右向左搜索 high-; Rlow = Rhigh; while (low high) Rhigh = Rlow; Rlow = pivotkey; return low; / 返回枢轴所在位置 / Partition void QSort (int R, int s, int t) / 对记录序列 Rs.t 进行快速排序 if (s t) / 长度大于 1 int pivotloc = Partition(R, s, t); / 对 Rs.t 进行一次划分 QSort(R, s, pivotloc -

10、 1); / 对低子序列递归排序, pivotloc 是枢 轴位置 QSort(R, pivotloc + 1, t); / 对高子序列递归排序 / QSort void HeapAdjust(int R, int s, int m) 已知Rs.m中除Rs之外均满足堆的定义,本函数调整Rs 使Rs.m成为一个大顶堆 int j,rc; rc=Rs; for(j=2*s;j=m;j*=2) / 沿关键字叫大的结点向下筛选 if(jm /rc 应插入在位置 s 上 Rs=Rj; s=j; Rs=rc; /插入 void HeapSort(int R, int n) /对顺序表 R 做堆排序 int

11、 i,t; for(i=n/2;i0;-i) / 把 R1.n 建成大顶堆 HeapAdjust(R,i,n); for(i=n;i1;-i) / 大顶堆 t=R1; / 将堆顶记录和当前未经排序子序列 R1.i R1=Ri; / 中的最后一个记录相互交换 Ri=t;/ 此交换将最大元素放在末尾 ,即取出堆顶元素 HeapAdjust(R,1,i-1); /将 R1.i-1 重新调整为大顶堆 void main() char next = y; int n, i, m2; int *num; int *num2; int *num3; cout 请输入元素个数 :n; num = new in

12、tn; num2 = new intn; num3 = new intn + 1; cout 请依次输入每个元素 :endl; for(i = 0; i numi; cout 您输入的元素为 :endl; for(i = 0; i n; i+) coutnumi ; coutendl; for(i = 0; i n; i+) num2i=numi; cout 选择排序 :endl; SelectSort(num2, n); for(i = 0; i n; i+) coutnum2i ; coutendl; for(i=0; in; i+) num2i=numi; cout 冒泡排序 :endl

13、; BubbleSort(num2, n); for(i = 0; i n; i+) coutnum2i coutendl; for(i = 0; i n; i+) num2i=numi; cout 折半插入排序 :endl; BiInsertionSort(num2, n); for(i = 0; i n; i+) coutnum2i ; coutendl; for(i = 0; i n; i+) num2i=numi; cout 快速排序 :endl; QSort(num2, 0, n-1); for(i = 0; i n; i+) coutnum2i ; coutendl; for(i

14、= 0; i n; i+) num3i + 1=numi; cout堆排序:endl; HeapSort(num3, n); for(i = 0; i n; i+) coutnum3i+1 ; coutendl; cout您输入的元素为:endl; for(i = 0; i n; i+) coutnumi ; coutendl; while(next != n) coutvv请输入要查找的元素:m2; coutvv顺序查找(原始序列):endlSeqSearch(num, n, m2)endl; coutvv 顺 序 查 找 ( 排 序 序 列 ):vvendlvvSeqSearch(num2, n, m2)vvendl; coutvv 折 半 查 找 ( 排 序 序 列 ):vvendlvvBiSearch(num2, n, m2)vvendl; coutvv继续?(y/n):vnext; cout任意键退出endl; getch(); 二別1童铁-甜1上剋一廉iiMJffift曲JLJt半宦我E厂叭町*1峠“I I I ;:w. nrFt 山 ait nfl 缪 d j荷 / Flraiy ?7W i A| 标淮| JsewasVRecotd 8/8Exdushw NU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论