电子科技大学软件技术基础实验报告2

合集下载

电子科技大学实验报告

电子科技大学实验报告

电子科技大学实验报告电子科技大学实验报告电子科技大学作为中国一流的电子信息科学与技术学府,以其卓越的教育质量和科研实力备受瞩目。

在这所学校里,学生们不仅接受了丰富的理论知识,更重要的是能够通过实验来巩固和应用所学的知识。

实验报告作为实验课程的重要组成部分,对学生的实验能力、分析能力和表达能力都有一定的要求。

一、实验目的与背景每个实验报告都应该明确实验的目的和背景。

在电子科技大学的实验报告中,一般会先介绍该实验所涉及的相关知识和背景,然后明确实验目的。

以“电路实验”为例,可以介绍电路的基本概念和理论知识,然后明确实验目的是通过搭建电路,观察和分析电流、电压、电阻等参数的变化规律。

二、实验装置与步骤实验报告中应该详细描述实验所用的装置和仪器,并给出实验步骤。

例如,在电路实验中,可以列出所用的电源、电阻、电流表、电压表等装置,并详细说明实验的具体步骤,包括搭建电路的过程、调节参数的方法以及观察数据的记录方式。

三、实验结果与数据分析实验结果是实验报告的重要部分,学生需要将实验过程中所得到的数据进行整理和分析。

在电子科技大学的实验报告中,学生可以通过绘制图表、计算数据等方式来展示实验结果。

例如,在电路实验中,可以通过绘制电流与电压的关系曲线图来展示实验结果,并根据曲线的趋势和数据的变化来分析电路的特性和规律。

四、实验讨论与结论实验讨论是实验报告中的重要环节,学生可以在这一部分对实验结果进行讨论和解释。

例如,在电路实验中,学生可以通过比较实验数据和理论计算结果的差异,来分析实验误差的原因,并提出改进的方法。

最后,学生需要总结实验的结论,并对实验的意义和应用进行简要的说明。

五、实验心得与改进意见实验心得是学生对实验过程和结果的个人感悟和体会,可以在实验报告的最后部分进行阐述。

学生可以谈论自己在实验中遇到的困难和解决方法,以及对实验过程和结果的评价。

同时,学生还可以提出对实验的改进意见,以便于今后的实验能够更加顺利和有效地进行。

计算机软件技术基础实验报告_2

计算机软件技术基础实验报告_2

计算机软件基础实验报告姓名学号实验目的1. 掌握C语言程序设计方法, 并学会上机调试。

2. 熟悉Huffman编码源程序,并构造Huffman树。

实验内容试设计一算法, 从包括n个元素的数组中, 求最大和最小元素, 并使得当n个元素为有序排列时, 元素之间的比较次数仅为n-1次。

在给出的Huffman编码源程序基础上, 要求画出Huffman树, 求出与等长编码相比时的压缩比。

实验要求1.根据实验内容编写算法, 并用 C 语言进行程序设计。

2.将所编程序在计算机上调试通过,并全面测试.实验结果1. 以一个含有8个元素的一维数组{1, 2, 3, 5, 7, 8, 9, 12}为例,设计程序如下:#include<stdio.h>int maxArray(int x ,int y);int minArray(int x ,int y);int main(void){int i = 0 ;int array[8]={ 1, 2, 3, 5, 7, 8, 9, 12} ;printf;do{scanf("%d",&array[i]);i++;} while(i < 8);int maxTemp = array[0];int minTemp = array[0];int maxIndex = 0;int minIndex = 0;for(i=1;i<8;i++){maxTemp = maxArray(array[i] , maxTemp);minTemp = minArray(array[i] , minTemp);}for(i=0;i<8;i++){if (maxTemp == array[i]){maxIndex = i;}if (minTemp == array[i]){minIndex = i;}}printf;return 0;}运行结果如下:2.Huffman编码源程序#include <dos.h>#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{unsigned int weight; //结点权值unsigned int parent,lchild,rchild; //结点的父指针, 左右孩子指针}HTNode,*HuffmanTree; //动态分配数组存储哈夫曼树typedef char **HuffmanCode; //动态分配数组存储哈夫曼编码表void CreateHuffmanTree(HuffmanTree &,unsigned int*,int ); //生成哈夫曼树void HuffmanCoding(HuffmanTree,HuffmanCode &,int ); //对哈夫曼树进行编码void PrintHuffmanCode(HuffmanCode,unsigned int*,int); //显示哈夫曼编码void Select(HuffmanTree,int,int&,int&); //在数组中寻找权值最小的两个结点void main(){HuffmanTree HT; //哈夫曼树HTHuffmanCode HC; //哈夫曼编码表HCint n,i; //n是哈夫曼树叶子结点数unsigned int *w; //w存放叶子结点权值char j='y';printf("演示构造哈夫曼树.\n");printf("输入需要进行编码的字符数目.\n例如:8\n");printf("然后输入每个字符出现的次数/权值.\n");printf("例如:5 29 7 8 14 23 3 11\n");printf("自动构造一棵哈夫曼树并显示哈夫曼编码.\n");printf(" 5---0110\n 29---10\n 7---1110\n 8---1111\n 14---110\n");printf(" 23---00\n 3---0111\n 11---010\n");while(j!='N'&&j!='n'){printf("请输入字符数目:");scanf("%d",&n); //输入字符数目if(n<=1) {printf("该数不合理!\n");continue;}w=(unsigned int*)malloc(n*sizeof(unsigned int)); //开辟空间存放权值printf("请输入各字符出现的次数/权值:\n");for(i=0;i<n;i++) scanf("%d",&w[i]); //输入各字符出现的次数/权值CreateHuffmanTree(HT,w,n); //生成哈夫曼树HuffmanCoding(HT,HC,n); //进行哈夫曼编码PrintHuffmanCode(HC,w,n); //显示哈夫曼编码printf("哈夫曼树构造完毕, 还要继续吗?(Y/N)");scanf(" %c",&j);}}void CreateHuffmanTree(HuffmanTree &HT,unsigned int *w,int n){//w存放n个结点的权值, 将构造一棵哈夫曼树HTint i,m;int s1,s2;HuffmanTree p;if(n<=1) return;m=2*n-1; //n个叶子结点的哈夫曼树, 有2*n-1个结点HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode)); //开辟2*n各结点空间for(p=HT+1,i=1;i<=n;++i,++p,++w) //进行初始化{p->weight=*w;p->parent=0;p->lchild=0;p->rchild=0;}for(;i<=m;++i,++p){p->weight=0;p->parent=0;p->lchild=0;p->rchild=0;}for(i=n+1;i<=m;++i) //建哈夫曼树{Select(HT,i-1,s1,s2);//从HT[1...i-1]中选择parent为0且weight最小的两个结点, 其序号分别为s1和s2HT[s1].parent=i; HT[s2].parent=i; //修改s1和s2结点的父指针parentHT[i].lchild=s1; HT[i].rchild=s2; //修改i结点的左右孩子指针HT[i].weight=HT[s1].weight+HT[s2].weight; //修改权值}}void HuffmanCoding(HuffmanTree HT,HuffmanCode &HC,int n){//将有n个叶子结点的哈夫曼树HT进行编码, 所编的码存放在HC中//方法是从叶子到根逆向求每个叶子结点的哈夫曼编码int i,c,f,start;char *cd;HC=(HuffmanCode)malloc((n+1)*sizeof(char *)); //分配n个编码的头指针向量cd=(char *)malloc(n*sizeof(char)); //开辟一个求编码的工作空间cd[n-1]='\0'; //编码结束符for(i=1;i<=n;++i) //逐个地求哈夫曼编码{start=n-1; //编码结束位置for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent) //从叶子到根逆向求编码if(HT[f].lchild==c) cd[--start]='0'; //若是左孩子编为'0'else cd[--start]='1'; //若是右孩子编为'1'HC[i]=(char *)malloc((n-start)*sizeof(char)); //为第i个编码分配空间strcpy(HC[i],&cd[start]); //将编码从cd复制到HC中}free(cd); //释放工作空间}void PrintHuffmanCode(HuffmanCode HC,unsigned int *w,int n){//显示有n个叶子结点的哈夫曼树的编码表int i;printf("HuffmanCode is :\n");for(i=1;i<=n;i++){printf(" %3d---",w[i-1]);puts(HC[i]);}printf("\n");}void Select(HuffmanTree HT,int t,int&s1,int&s2){//在HT[1...t]中选择parent不为0且权值最小的两个结点, 其序号分别为s1和s2 int i,m,n;m=n=10000;for(i=1;i<=t;i++){if(HT[i].parent==0&&(HT[i].weight<m||HT[i].weight<n)) if(m<n){n=HT[i].weight;s2=i;}else {m=HT[i].weight;s1=i;}}if(s1>s2) //s1放较小的序号{i=s1;s1=s2;s2=i;}}运行结果如下:输入数据后的运行结果:实验心得要熟练掌握程序的编写, 如果没有一定的想象能力和大量的上机实践是根本无法完成的。

杭电软件实验报告(3篇)

杭电软件实验报告(3篇)

第1篇一、实验背景与目的随着计算机技术的飞速发展,软件工程已成为计算机科学与技术领域的重要组成部分。

为了让学生更好地掌握软件工程的基本理论、方法和实践技能,提高软件设计、开发和测试能力,杭州电子科技大学计算机学院特开设了软件实验课程。

本次实验旨在通过实际操作,让学生了解软件工程的基本流程,掌握软件设计、编码、测试等关键步骤,培养学生的团队协作能力和创新意识。

二、实验环境与工具1. 实验环境:Windows 10操作系统,Java Development Kit(JDK)1.8,Eclipse IDE。

2. 实验工具:Git版本控制工具,JUnit测试框架,Maven构建工具。

三、实验内容与步骤1. 项目需求分析本次实验项目要求设计一个简单的学生信息管理系统,包括学生基本信息、课程信息、成绩信息等。

系统应具备以下功能:(1)学生信息管理:增加、删除、修改、查询学生信息。

(2)课程信息管理:增加、删除、修改、查询课程信息。

(3)成绩信息管理:增加、删除、修改、查询成绩信息。

2. 系统设计(1)系统架构设计:采用MVC(Model-View-Controller)模式,将系统分为模型(Model)、视图(View)和控制器(Controller)三个部分。

(2)模块划分:根据功能需求,将系统划分为学生信息模块、课程信息模块、成绩信息模块和主界面模块。

3. 编码实现(1)学生信息模块:实现学生信息的增删改查功能。

(2)课程信息模块:实现课程信息的增删改查功能。

(3)成绩信息模块:实现成绩信息的增删改查功能。

(4)主界面模块:实现系统启动、功能导航、退出等功能。

4. 测试与调试(1)单元测试:使用JUnit测试框架对各个模块进行单元测试,确保模块功能正确。

(2)集成测试:将各个模块集成在一起,进行集成测试,确保系统整体功能正常。

(3)性能测试:对系统进行性能测试,评估系统响应速度、资源消耗等性能指标。

5. 项目部署与发布(1)使用Maven构建工具生成项目打包文件。

《软件技术基础》上机实验报告范文

《软件技术基础》上机实验报告范文

《软件技术根底》上机实验报告范文今天为大家收集资料回来了关于实验的范文,希望能够为大家带来帮助,希望大家会喜欢。

同时也希望给你们带来一些参考的作用,如果喜欢就我们的后续更新吧!1.顺序表的建立、插入、删除。

2.带头结点的单链表的建立(用尾插法)、插入、删除。

1.分别建立二个文件夹,取名为顺序表和单链表。

2.在这二个文件夹中,分别存放上述二个实验的相关文件。

每个文件夹中应有三个文件(.c文件、.obj文件和.exe文件)。

3. 截止时间:12月28日(18周周日)晚上关机时为止,届时效劳器将关闭。

1.格式:《计算机软件技术根底》上机实验报告用户名se×××× 学号姓名学院① 实验名称:② 实验目的:③ 算法描述(可用文字描述,也可用流程图):④ 源代码:(.c的文件)⑤ 用户屏幕(即程序运行时出现在机器上的画面):2.对c文件的要求:程序应具有以下特点:a 可读性:有注释。

b 交互性:有输入提示。

c 构造化程序设计风格:分层缩进、隔行书写。

3. 上交时间:12月26日下午1点-6点,工程设计中心三楼教学组。

请注意:过时不候哟!0.顺序表的插入。

1. 顺序表的删除。

2.带头结点的单链表的插入。

3. 带头结点的单链表的删除。

注意:1. 每个人只需在实验报告中完成上述4个工程中的一个,详细安排为:将自己的序号对4求余,得到的数即为应完成的工程的序号。

例如:序号为85的同学,85%4=1,即在实验报告中应完成顺序表的删除。

2. 实验报告中的源代码应是通过编译链接即可运行的。

3. 提交到个人空间中的内容应是上机实验中的全部内容。

【参考文档】《软件技术基础》实验报告 (1000字)-精选word文档 (16页)

【参考文档】《软件技术基础》实验报告 (1000字)-精选word文档 (16页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==《软件技术基础》实验报告 (1000字)《软件技术基础》实验报告学院:XXXXXXXXX班级: XXXXXXX学号:XXXXXXXXXX姓名: XXXXXX指导老师: XXXXXX实验一顺序表的操作班级 XXXXX 学号 XXXXXXX 姓名 XXXX第 X 周星期 X 、 XXX 节成绩一、实验目的:1、掌握顺序表结构的实现方式;2、掌握顺序表常用算法的实现;3、熟悉利用顺序表解决问题的一般思路;4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。

二、实验内容:1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。

(2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。

(3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。

2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。

要求实现菜单、初始化、添加、删除和显示等功能。

三、实验结果:四、实验中遇到的问题及解决方法:相关函数书上都有一样的或类似的,因此并未遇到什么问题。

五、实验心得体会:书上的例程是含有两个元素的,改为一个元素的时候花了一些时间。

参考了书本,对书上的函数有了比较深刻的理解。

附:部分源程序#include<iostream.h>const int maxsize=100;struct stu{int id;char name[20];};struct SeqList{stu data[maxsize];int length;};//主函数int main(){SeqList L;L.length=0;stu s;cout<<"请输入三个学生的学号、姓名:\n";} for(int i=0;i<3;i++) { cin>>s.id>>; Insert(&L,s); }cout<<endl; Display(&L); int ID; cout<<"请输入要删除的学生的学号"; cin>>ID; Delete(&L,ID); cout<<endl; Display(&L); return 0;实验二链表的操作(一)班级 XXXXX 学号 XXXXXXX 姓名 XXXX第 X 周星期 X 、 XXX 节成绩一、实验目的:1、掌握单链表结构的实现方式;2、掌握单链表常用算法的实现。

电子科技大学软件技术基础调试报告

电子科技大学软件技术基础调试报告

软件技术基础上机实验调试报告
(学生姓名)(学号)
调试报告
*******************************************************************************说明:调试过程在代码注释中
一、顺序表:
1.插入和删除
1.1插入函数:
1.2删除函数:
2.插入:
3.插入:
4删除所有负数:
二.链表:
1.插入:
2.删除
3.寻找x时
4.插入
5插入
5.1教师设计的:
5.2.学生设计的:
6.链点空间
7.链点使用内存
8.删除
三.栈和队列3_1
3-2
该程序在计算乘除时没有错误错误在于计算加减混合运算:出现问题的代码块如下:
演算经过:
调试结果:
出现问题的原因是:先取数值再取符号而且把后取的数值放在符号左边,而忽略了后面取的数值前面的符号,从而导致结果出错;
解决办法:第一次先取符号再取数再取一个符号和一个数,并且符号均在数的左边,先取的数也在左边(有点类似把加减号当做正负号),然后再取一个符号和一个数,符号和先取的数在左,以此类推。

3-3
出错的地方:遍历队列时,最后一个元素没有遍历到
3-4
队尾号出错,比正确的队尾多1
3-5
错误1:插入到最后一个位置之后时,覆盖了原最后一个元素。

软件技术大学实习报告模板5篇

软件技术大学实习报告模板5篇

软件技术大学实习报告模板5篇软件技术大学实习报告(篇1)1、实习名称数据库开发2、实习目的通过在技术开发部门的学习了解公司主要开展的业务情况,了解工作流程。

毕业实习是教学过程中一个重要的实践性教学环节,是一次综合性实习。

通过实习加深对专业理论知识的理解,培养和提高实践操作问题、分析问题、解决问题的能力,使综合运用所学理论知识与编程实践紧密结合,为毕业后从事计算机工作打下良好的基础。

实习要达到以下目标:①在实习过程中了解自己的主要工作职责和任务,学会以各种方式学习,提高岗位的适应能力和综合素质。

②将在校所学的知识运用到实践岗位中,提高观察问题、发现问题、分析问题、解决问题的能力,提高计算机专业水平。

③在规范有序的实际工作中培养吃苦耐劳、努力钻研的精神。

3、实习内容负责软件系统的模块设计、编码、调试工作,参与软件测试的需求分析、功能模块确认,熟练掌握delphi、myeclipse、oracle数据库等开发工具,尤其是熟悉短信、彩信的业务机制和各种网关。

4、实习时间2月21日—6月21日5、实习地点市区大道号6、实习单位和部门公司技术开发部7、前言随着计算机技术的发展,在internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。

因此通信行业在internet应用上的地位显而易见,它已成为各政府机关、企业单位、事业单位信息化建设中的重要组成部分,从而倍受人们的关注,尤其是中国移动所做的服务,给我们在信息的交流和传递的过程中起到了很大的帮助作用。

计算机将具备更多的智能成分,它将具有多种感知能力、一定的思考与判断能力及一定的自然语言能力。

除了提供自然的输入手段外,让人能产生身临其境感觉的各种交互设备也已经出现,移动的终端设备技术是这一领域发展的集中体现。

今天人们谈到计算机必然地和网络联系起来,一方面孤立的未加入网络的计算机越来越难以见到,另一方面计算机的概念也被网络所扩展。

电子科技大学实习报告

电子科技大学实习报告

电子科技大学通信与信息工程学院生产实习学号:2010013040010姓名:毛嵩指导教师:游长江一、实习目的和任务基于ADS软件的低通滤波器设计二、实习内容和要求实习要求:1、在老师的指导下,安装ADS软件,学习ADS软件的基本应用。

2、掌握ADS软件应用之后,利用ADS软件完成低通滤波器的设计和仿真应用。

设计指标:截止频率:1.2GHz;设计方案:利用椭圆函数滤波器设计并仿真,经过优化后,结果调出来的波形能达到指标,但波形会形成带阻波形,只能实现在一定范围内低通。

所以不选。

利用切比雪夫滤波器设计并仿真,经过优化调试后可用。

利用ADS自带的集总方式得出切比雪夫低通滤波器的阶数如下图可得阶数n=11之后直接利用集总生成切比雪夫滤波器,然后用如下图的功能把切比雪夫滤波器中的电感、电容转换为微带线低通滤波器集总参数模型如图原理图设计并加T型接口如图转换过程中把电介质设为2.2,基板厚度设为0.8mm(这里使用的是已经验证可用)。

把转换完的11阶微带电路复制到另一个新建设计面页,连成如下图所示,并连成如下电路,参数、变量什么的都设完后自动优化加手动都达不到理想波形,通过讨论后加上T型接头才能调出理想波形图形改为如下所示,设计变量参数、微带参数和S参数设置变量参数如图所示设置如下图中的控件MSUB微带线参数设置S参数中扫描的频率范围和步长如图设置完成后即可单击工具栏上的simulate按钮或是点击simulate→simulate,当仿真结束后,系统会自动弹出一个数据显示窗口,在数据显示窗口中插入一个S21参数的矩形图,图形如下显然波形还达不到指标要求,设置如下自动优化参数并自动优化优化后若还不够符合指标,则把优化的数据填入变量中,继续进行优化直到达到指标。

图形如下由上图可知优化完后的波形能达到指标要求电路图仿真成功后进行版图的生成和仿真生产版图如下在图中加输出输入口后把原理图的参数导进并进行仿真。

版图仿真生成波形如下,不符合指标,重新回到原理图窗口进行优化仿真,产生这种情况的原因是微带线的宽度取值不合适,可以改变优化变量的初值,也可根据曲线与指标的差别情况适当调整优化目标的参数,重新进行优化经过多次优化后仿真出如下图波形,还是稍微有点误差,但已基本符合指标要求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

电子科技大学通信与信息工程学院标准实验报告(实验)课程名称软件技术基础实验电子科技大学教务处制表电子科技大学实验报告一、实验室名称:校公共机房二、实验项目名称:链表程序设计三、实验学时:4学时四、实验原理:使用VS2010等C语言集成开发环境(IDE),在微型计算机上对程序进行编辑、编译、连接与运行。

通过上机练习掌握在链表的建立、插入删除等方法和过程。

五、实验目的:1.熟练链表的概念和基本操作方法。

2.掌握课程平台使用方法。

六、实验内容:上机完成链表的一系列操作,并用链表完成课后习题9,编程实验,调试运行程序并完成报告。

七、实验器材(设备、元器件):硬件要求:普通pc机,1G内存,100G硬盘空间即可。

软件要求:Windows 7,包括C编译器的IDE。

八、实验步骤、实验编程与运行结果:1.程序文件名为***.cpp,源程序清单如下:/*基础实验1,链表的建立,插入,删除*/#include<stdio.h>#include<stdlib.h>struct list{int info;struct list *next;};struct list *Create(int *numnode){//创建一个链表struct list *head,*tail,*cnew;head=NULL;int num;printf("输入数据(以零结束):");while(1){scanf("%d",&num);if(num==0)//输入为零表示输入结束break;cnew=(struct list*)malloc(sizeof(struct list));cnew->info=num;cnew->next=NULL;if(head==NULL)//若为空则将头节点指向新节点head=cnew;elsetail->next=cnew;//将当前节点的next指向新的节点tail=cnew;(*numnode)++;}return head;}void insert(struct list *h,int i,int x){struct list *p,*t;int j;p=h;j=0;while(p!=NULL&&j<i-1){p=p->next;j++;}if(j!=i-1)printf("overflow!");else{t=(struct list*)malloc(sizeof(struct list));t->info=x;t->next=p->next;p->next=t;}}struct list *insert_head(struct list *h,int x) {struct list *p,*t;p=h;t=(struct list*)malloc(sizeof(struct list));t->info=x;t->next=h;return t;}struct list *Delete_head(struct list *h){struct list *p;p = h;h = h->next;free(p);return h;}void Delete(struct list *h,int i){struct list *p,*s;int j;p=h;j=0;while(p->next!=NULL&&j<i-1){p=p->next;j=j+1;}if(j!=i-1)printf("overflow!");else{s=p->next;p->next=p->next->next;free(s);}}void display(struct list *head){struct list *p;if(head==NULL){printf("链表为空,没有数据\n");return;}printf("\n链表的数据元素:\n");for(p=head;p!=NULL;p=p->next)printf("%d ",p->info);printf("\n");}int main(){struct list *head1;int numnode1,point1,point2;int ne,p,q;numnode1=0;head1=NULL;//初始化将节点个数初始化为零head1=Create(&numnode1);display(head1);printf("\n链表head1的节点个数为:%d\n",numnode1);printf("input new element:");scanf("\n%d",&ne);printf("\nthe point of new element:");scanf("%d",&p);if(p==1) head1=insert_head(head1,ne);else insert(head1,(p-1),ne);display(head1);printf("\ndelete point:");scanf("%d",&q);if(q==1) head1=Delete_head(head1);else Delete(head1,(q-1));display(head1);}/*实验2,链表中元素的删除,删除失败则插入*/ #include<stdio.h>#include<stdlib.h>struct list{int info;//节点信息struct list *next;};struct list *Create(int *numnode){//创建一个链表struct list *head,*tail,*cnew;head=NULL;int num;printf("输入数据(以零结束):");while(1){scanf("%d",&num);if(num==0)//输入为零表示输入结束break;cnew=(struct list*)malloc(sizeof(struct list));cnew->info=num;cnew->next=NULL;if(head==NULL)//若为空则将头节点指向新节点head=cnew;elsetail->next=cnew;//将当前节点的next指向新的节点tail=cnew;(*numnode)++;}return head;}int find(struct list *head,int fab){struct list *p;int flag=0,j=0;for(p=head;p!=NULL;p=p->next){j=j+1;if(p->info==fab){return j;flag=1;}}if(flag==0)return -1;};void Delete(struct list *h,int i){struct list *p,*s;int j;p=h;j=0;while(p->next!=NULL&&j<i-1){p=p->next;j=j+1;}if(j!=i-1)printf("overflow!");else{s=p->next;p->next=p->next->next;free(s);}}void insert(struct list *h,int i,int x){struct list *p,*t;int j;p=h;j=0;while(p!=NULL&&j<i-1){p=p->next;j++;}if(j!=i-1)printf("overflow!");t=(struct list*)malloc(sizeof(struct list));t->info=x;t->next=p->next;p->next=t;}void display(struct list *head){//遍历链表输出struct list *p;if(head==NULL){printf("链表为空,没有数据\n");return;}printf("\n-----链表的数据元素------\n");for(p=head;p!=NULL;p=p->next)printf("%d ",p->info);printf("\n");}int main(){struct list *head1;int numnode1,a,q;numnode1=0;head1=NULL;//初始化将节点个数初始化为零head1=Create(&numnode1);display(head1);printf("delete:");scanf("%d",&a);q=(find(head1,a)-1);if(q<0) insert(head1,numnode1,a);elseDelete(head1,q);display(head1);}/*实验3,课本习题,自动判断位置并插入,链表实现*/ #include<stdio.h>#include<stdlib.h>struct list{int info;struct list *next;};struct list *Create(int *numnode){//创建一个链表struct list *head,*tail,*cnew;head=NULL;int num;printf("输入数据(以零结束):");while(1){scanf("%d",&num);if(num==0)//输入为零表示输入结束break;cnew=(struct list*)malloc(sizeof(struct list));cnew->info=num;cnew->next=NULL;if(head==NULL)//若为空则将头节点指向新节点head=cnew;elsetail->next=cnew;//将当前节点的next指向新的节点tail=cnew;(*numnode)++;}return head;}void insert(struct list *h,int i,int x){struct list *p,*t;int j;p=h;j=0;while(p!=NULL&&j<i-1){p=p->next;j++;}if(j!=i-1)printf("overflow!");else{t=(struct list*)malloc(sizeof(struct list));t->info=x;t->next=p->next;p->next=t;}}struct list *insert_head(struct list *h,int x){struct list *p,*t;p=h;t=(struct list*)malloc(sizeof(struct list));t->info=x;t->next=h;return t;}int find_position(struct list *head,int n_ew){struct list *p;int flag,j=0;for(p=head;p!=NULL;p=p->next){j=j+1;if(n_ew<=p->info){return j;flag=1;break;}}}void display(struct list *head){struct list *p;if(head==NULL){printf("链表为空,没有数据\n");return;}printf("\n链表的数据元素:\n");for(p=head;p!=NULL;p=p->next)printf("%d ",p->info);printf("\n");}int main(){struct list *head1;int numnode1,point1,point2;int ne,p;numnode1=0;head1=NULL;//初始化将节点个数初始化为零head1=Create(&numnode1);display(head1);printf("\n链表head1的节点个数为:%d\n",numnode1);printf("input new element:");scanf("\n%d",&ne);p=find_position(head1,ne);if(p==1) head1=insert_head(head1,ne);else insert(head1,(p-1),ne);display(head1);}。

相关文档
最新文档