一些数据结构和Ubuntu Linux习题

1 数据结构

(1)顺序三元组

  要求:实现一个顺序三元组

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
using namespace std;
void xianshi(int*T){
	cout<<T[0]<<" "<<T[1]<<" "<<T[2]<<endl;
}
int tishi(){
	int k;
	cout<<"请输入要执行的操作:"<<endl;
	cin>>k;
	cout<<endl;
	cout<<"1、生成三元组"<<endl;
	cout<<"2、销毁三元组"<<endl;
	cout<<"3、获取第i个位置的数字"<<endl;
	cout<<"4、更改第i个位置的数字"<<endl;
	cout<<"5、判断三元组是否升序"<<endl;
	cout<<"6、判断三元组是否降序"<<endl;
	cout<<"7、获取三元组中最大值"<<endl;
	cout<<"8、获取三元组中最小值"<<endl;
	cout<<"9、三元组求和"<<endl;
	cout<<"0、退出程序"<<endl; 
	return k;
}

/*生成三元组*/
bool InitTriplet(int* &T,int v1,int v2, int v3){
	T = NULL;
	T = (int*) malloc(3*sizeof(int));
	if(sizeof(T) == 0) {
		return false;
	}
	T[0] = v1;
	T[1] = v2;
	T[2] = v3;
	return true;
}

/*销毁三元组*/ 
bool DestroyTriplet(int* T){
	free(T);
	T = NULL;
	if(T != NULL)return false;
	return true;
}

/*获取第i位置元素*/ 
bool Get(int* T,int i,int* e){
	if(i<1||i>3)return false;
	*e = T[i-1];
	return true;
}

/*更改第i位置元素*/ 
bool Put(int* &T,int i,int e){
	if(i<1||i>3)return false;
	T[i-1] = e;
	return true;
}

/*求最大值*/ 
bool Max(int* T,int& e){
	e = (T[0] >= T[1])?((T[0] >= T[2])?T[0]:T[2]):((T[1] >= T[2])?T[1]:T[2]);
	return true;
}

/*求最小值*/ 
bool Min(int* T,int& e){
	e = (T[0] <= T[1])?((T[0] <= T[2])?T[0]:T[2]):((T[1] <= T[2])?T[1]:T[2]);
	return true;
}

/*判断是否降序*/ 
bool IsDescending(int* T){
	return (T[0] >= T[1])&&(T[1] >= T[2]);
}

/*判断是否升序*/ 
bool IsAscending(int* T){
	return (T[0] <= T[1])&&(T[1] <= T[2]);
}

/*求和*/ 
int Sum(int *T){
	return T[0] + T[1] + T[2];
}
int main(){
	int k = 1;
	int *T = NULL;
	while(k){
		k = tishi();
		if(k==1){
			int v1,v2,v3;
			cout<<"请输入三个数字:";
			cin>>v1>>v2>>v3;
			InitTriplet(T,v1,v2,v3);
			cout<<"其元素为";
			xianshi(T); 
		}
		if(k==2){
			if(DestroyTriplet(T))cout<<"销毁成功!"<<endl;
			else cout<<"销毁失败"<<endl; 
		}
		if(k==3){
			int i,v;
			cout<<"请输入要查询的位置:";
			cin>>i;
			int e;
			while(!Get(T,i,&e)){
				cout<<"超出范围,请重新输入:";
				cin>>i;
			}
			cout<<"T["<<i<<"] = "<<e<<endl;
		} 
	}
	if(T != NULL)free(T);
	return 0;
} 

2 Ubuntu Linux

  (1)编写一个Shell脚本,能够比较两个交互式输入的整数的大小。

#!/home/sun
echo "Please input x y:"
read x y
if test $x -eq $y
	then
	echo "$x=$y"
elif test $x -gt $y
	then
	echo "$x>$y"
elif test $x -lt $y
	then
	echo "$x<$y"
else
	echo "input error!"
fi

  (2)编写一个Shell脚本,删除当前路径下所有长度为0的文件

#!/home/sun
rm `find -empty`

  (3)编写一个Shell脚本,统计当前路径下所有以f开头的文件

#!/home/sun
echo "当前目录下目录的个数:"
ls -lR |grep "^d"|wc -l
echo "当前目录下文件的个数:"
ls -lR |grep "^-"|wc -l
echo "当前目录下以f开头的文件的个数"
ls -lR |grep "^-"|wc -l
echo "success!"

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值