HDU计算机软件技术基础复习

博客涵盖数据结构、操作系统、数据库和软件工程知识。数据结构介绍线性、树和图结构;操作系统涉及分类、处理器、设备等管理;数据库阐述基本概念;软件工程讲述软件开发过程如瀑布、原型、增量模型及软件维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构

什么是数据?

数据泛指那些能够背计算机接收,识别,储存,加工和处理的对象。那些能输入到计算机中并被计算机程序处理的符号的总称。
数据信息的关系:数据是信息的载体,信息是被加工过的数据。
数据元素(DATA Element):数据的基本单位,数据由若干个数据元素组成。如一个单位的职工名册上的某一位职工的信息就是一个数据元素
数据对象:具有相同性质的数据元素的集合,是数据的子集。数据元素是数据对象的一个实例
数据项:是具有独立含义的最小标志单位。如每一个职工的编号,年龄,姓名等等。
数据类型:比如C语言中所学的整型,字符串型,BOOL型。
某个数据元素可以看成一个结构体,结构体内的某一类型的变量可以看作是数据项。
数据结构=逻辑结构+储存结构+操作/运算
算法
1. 有穷性
2. 确定性
3. 有输入有输出
4. 有效性
(今年不考)

线性结构

  • 线性表

  • 例题L=(23,56,89,76,18),i=3,x=56,y=88
    Length(L)=5 //求线性表的长度
    Get(L,i)=89 //取第i个数
    Prior(L,x)=23//求x的前驱
    Next(L,x)=89//求x的后驱
    Locate(L,x)=2//求x的位置
    Insert(&L,y,i)=(23,56,88,89,76,18)//插入y到i的位置,原来i位置及其以后的值顺延
    Delete(&L,i+1)=(23,56,88,76,18)//删除i+1位置的值,i+1以后的值向前移动一个单位
    与数组不一样,第一个数的位置为1

  • 顺序表

       逻辑位置和物理地址对应,知道逻辑地址,即可知道物理地址
       如果每个元素在计算机中占d个储存单元,第一个元素为a0,地址为x,则ai的地址为x+i*d
    
  • 线性链表

每一个元素带一个指针,可以理解为一个结构体,有值域链域,链域指向后驱的值域

单链表
1. 插入节点		
Lnode *list_insert(Lnode *first,Lnode *p,int e)
{
	Lnode*q,*s;
	s=(Lnode *)malloc(sizeof(Lnode));//给新节点分配空间,构造新节点
	s->data-e;
	s->next=0;
	if(first==NULL){//如果是空链表
	first =s;
	return first;
	}
	if(p==first){ //p是首节点,将s插入到链表首节点之前
	s->next=first;
	first=s;
	}
	else{
	q=first;
	while(q->next!=p)//查找p的前驱点q
	q=q->next;
	q->next=s;
	s->next=p; //在链表q节点后面插入S节点
	}
	return first;
	}
2. 查找节点
Ln *list_find(Ln *first,int e)
{
 	Ln *p;
 	p=first;
 	if(first==NULL) //first为0,表示空链表
 	return NULL;
 	while(p){
 	if(p->data==e)
 	return p;//节点p的值与e相等,直接返回指针p
 	p=p->next;//继续向后查找
 	}
 	return NULL;
 	}
3. 删除节点
Ln *list_delete(Ln *first,int e)
{
	Ln *q,*p;
	q=p=first;
	if(first==NULL)
	return NULL;
	if(first->data==e)//被删除的节点是首节点
	{
		p=first;
		first=first->next;
		free(p);
		return first;
			
	}
	for(q=first;q->next;q->next)//被删除节点是中间某一点
	{
		p=q->next;
		if(p->data==e)//找到值为e的节点
		{
		q->next=p->next;
		free(p);
		break;
		}
	}return first;
	}
4. 建立并初始化链表
5. 销毁整个链表
  • 栈和队列

堆栈:FILO
(1).初始化堆栈:Inistack(S)
(2).进栈:push(S,x)
(3).出栈:pop(S)
(4).取栈顶元素:gettop(S)
(5).判断栈是否为空:isempty(S)

//初始化栈
void inistack(ss *S,int n)//空 top->-1;
{
	S->data=(elemtpye *)malloc(n*sizeof(elemtype));
	S->top=-1;
}

//进栈
int push(ss *S,elemtype x)
{
	if(S->top==maxsize-1)return0;//栈满
	else
	{
		S->top++;//进栈
		S->data[S->top]=x;
		return 1;
	}
}
//退栈
if(S->top==-1)return 0;
else
{
S->top--;
return 1;
}

//取栈顶元素
if(S->top==-1)return 0;
else return S->data[S->top];

//判断栈是否为空
if(S->top==-1)return 0;//栈空,返回为0
else return ;

//销毁栈
free(S->data);
	

队列:FIFO
顺序队列
front==rear 空
入队列 data[rear++]=x;
出队列 x=data[front++];
front>0,rear=maxsize假溢出
front=0,rear=maxsize 真溢出
循环队列
队列满, rear = (rear+1)%maxsize=(5+1)%6=0
队列空,font = rear
稀疏矩阵
(1)三对角矩阵
(2)下对角矩阵
LOC(Aij)=LOC(A00)+i(i+1)/2+j
(3)三元组表

行号列号
0112
029
25-3

树结构

1.节点的层次:从根开始定义,根为第一层
2.树的高度,max层数

二叉树

满二叉树>完全二叉树>非完全二叉树
左链域+值域+右链域
二叉树的遍历
1.DLR 先序遍历 先根再左再右
2.LDR 中序遍历 先左再根再右
3.LRD 后序遍历 先左再右再根
4.层次遍历 从上到下,从左到右

哈夫曼树

WPL=权值*路径长度
路径长度=该节点的层数-1
哈夫曼树的生成
1原始数据变成森林
2两个权值最小的和作为这节点的根,继续这样
哈夫曼树编码
一串字符串,符号+字母
出现的频率作为权值,生成哈夫曼树。左路径为0,右路径为1

树和森林

 一群树是森林

二叉树和一般树的转换
1.A的第一个孩子节点B变成A的左孩子,A没有右兄弟,所以A是二叉树的根
2.B的第一个孩子变成B的左孩子,B的右兄弟变成B的右孩子
森林转换成二叉树
1、最左数的根节点变成二叉树的根节点
2.右兄弟都变成右孩子

图结构

顶点,边,弧,度,入度,出度,有向图,无向图,子图,权,网,路径,简单路径,回路,连通,强连通
邻接表和邻接矩阵 ,带权值的邻接表
图的遍历:广度和深度
深度:直到这顶点没有其他连接,返回上一顶点的其他连接
广度:求完这个顶点所有的连通顶点,再求下的顶点的所有其他连通顶点
最小生成树边的权值总和最小的生成树,我们称之为最小生成树
在这里插入图片描述

操作系统

1.操作系统分类

	(1)批处理系统。操作人员将作业成批的装入计算机,有操作系统在计算机中某个特定区域(输入井)将其组织
	好并按一定算法选择一个或几个作业,调入内存运行运行。结果放入输出井交给用户。交互能力差,系统的吞吐
	量大,资源利用率高
	(2)分时系统,不同时间间隔内,不同设备访问(共享)同一个其他设备。允许多个用户同时使用一台计算机
	1.同时性 2.交互性 3.独立性 4.及时性
	(3)实时系统。及时响应随机发生的外部事件
		1.实施信息处理系统 民航飞机票的预定,查询,售票及情报检索系统
		2.实施控制系统 导弹导航系统
		特点:快速的处理能力,适应实时性的要求。有高精度的实时时钟
	(4)桌面PC操作系统 MS-DOS,WINDOWS, MAC OS X, LINUX
	(5)手持设备操作系统
	(6)云计算操作系统 云计算云OS		

处理器管理

作业:程序+数据+作业说明书。系统通过作业说明书控制文件形式的程序和数据,使之执行和操作,并在系统中建立作业控制块(JCB)

设备管理

文件管理

存储管理

数据库

  • 基本概念
    1.数据库
    核心任务是管理数据,对数据进行分类,组织,储存,检索和维护
    2.数据库管理系统
    3.数据库系统

软件工程

软件开发过程

1.瀑布模型
上一项的输出是下一项的输入,下一项有问题会返回给上一项。
在这里插入图片描述

2.原型模型
快速建立一个比较LOW的原型系统,搭好了框架,通过客户的试用和反馈,修改模型
在这里插入图片描述

3.增量模型
就是给客户可以做某些任务的一个增量部件

软件维护

名称占比具体
改正性维护21%用户使用时遇到潜在的作物,对错误和BUG的修复
适应性维护25%适应新的硬件设备,操作系统和编译系统
完善性维护50%面对用户提出的需求,增强功能,增强性能和提高运行效率
预防性维护4%为 了提高软件的可维护性和可靠性







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值