姚津泓实验作业 网页链接可以看看
--实州胡纯验一
create database test1
on
(name=test1,
filename='d:\3116004357姚津泓\test1.mdf',
size=10,
maxsize=50,
filegrowth=5)
log on
(name=test1_log,
filename='d:\3116004357姚津泓\test1.ldf',
size=5mb,
maxsize=25mb,
filegrowth=5mb)
create database test2
on
(name=test11,
filename='d:\3116004357姚津泓\test11.mdf',
size=10,
maxsize=50,
filegrowth=5),
(name=test22,
filename='d:\3116004357姚津泓\test22.ndf',
size=10,
maxsize=50,
filegrowth=5),
(name=test33,
filename='d:\3116004357姚津泓\test33.ndf',
size=10,
maxsize=50,
filegrowth=5)
log on
(name=test11_log,
filename='d:\3116004357姚津泓\test11.ldf',
size=5mb,
maxsize=25mb,
filegrowth=5mb),
(name=test22_log,
filename='d:\3116004357姚津泓\test22.ldf',
size=5mb,
maxsize=25mb,
filegrowth=5mb)
create database test3
on
(name=dab1,
filename='d:\3116004357姚津泓\dab1.mdf',
size=10,
maxsize=50,
filegrowth=5),
filegroup fg11 --第一个文件组
(name=dab2,
filename='d:\3116004357姚津泓\dab2.ndf',
size=10,
maxsize=50,
filegrowth=5),
filegroup fg22 --第二个文件组
(name=dat1,
filename='d:\3116004357姚津泓\dat1.ndf',
size=10,
maxsize=50,
filegrowth=5),
(name=dat2,
filename='d:\3116004357姚津泓\dat2.ndf',
size=10,
maxsize=50,
filegrowth=5),
filegroup fg33--第三个文件组
(name=daz1,
filename='d:\3116004357姚津泓\daz1.ndf',
size=10,
maxsize=50,
filegrowth=5),
(name=daz2,
filename='册咐d:\3116004357姚津泓\daz2.ndf',
size=10,
maxsize=50,
filegrowth=5)
alter database test1
add file
(name=te,
filename='d:\3116004357姚津泓\te.ndf',
size=10,
maxsize=50,
filegrowth=5
)
alter database test2
modify file
(name=test11,
filename='d:\3116004357姚津泓\test11.mdf',
maxsize=55
)
drop database test1
--实验2--
create database 实验
create schema yaojinhong
create table yaojinhong.仓库
(
仓库号char(6)primary key check (仓库号like'[A-Z][A-Z][0-9][0-9][0-9][0-9]'),
城市char(10) unique not null,
面积 int check(面积>=50)
)
create table yaojinhong.职工
(
职工号char(8)primary key check (职工做液号like'[A-Z][A-Z][0-9][0-9][0-9][0-9][0-9][0-9]'),
仓库号char(6)constraint ck foreign key references yaojinhong.仓库(仓库号),
工资 money check (工资>=1000 and 工资<=10000)
)
create table yaojinhong.供应商
(
供应商号 char(4)primary key check (供应商号like'[S][0-9][0-9][0-9]'),
供应商名 char(16),
地址char(30),
)
create table yaojinhong.订购单
(职工号 char(8) not null foreign key references yaojinhong.职工.(职工号),
供应商号 char(4) null constraint supply foreign key references yaojinhong.供应商(供应商号) on delete set null,
订购单号 char(6) primary key check(订购单号 like 'OR[0-9][0-9][0-9][0-9]'),
订购日期 datetime default getdate(),
金额 money default null
)
create table yaojinhong.订购单明细
(订购单号 char(6) not null foreign key references yaojinhong.订购单(订购单号),
序号 char(2),
产品名称 char(20),
单价 money default null check(单价>0),
数量 int not null check(数量>0),
primary key(订购单号,序号)
)
alter table yaojinhong.订购单
add 完成日期 datetime default null
alter table yaojinhong.订购单明细
add check(数量 between 0 and 1000)
alter table yaojinhong.订购单明细
alter column 数量 int not null alter table yaojinhong.供应商
alter column 供应商名 varchar(30)
实验3
insert into yaojinhong.仓库 values('QW0001','广州',500)
insert into yaojinhong.仓库 values('QW0002','上海',900)
insert into yaojinhong.仓库 values('QW0003','北京',250)
insert into yaojinhong.仓库 values('QW0004','纽约',1000)
insert into yaojinhong.仓库 values('QW0005','深圳',650)
insert into yaojinhong.职工 values('ZG000001','QW0005',3000)
insert into yaojinhong.职工 values('ZG000002','QW0001',5600)
insert into yaojinhong.职工 values('ZG000003','QW0004',6600)
insert into yaojinhong.职工 values('ZG000004','QW0002',3800)
insert into yaojinhong.职工 values('ZG000005','QW0005',3900)
insert into yaojinhong.职工 values('ZG000006','QW0001',4600)
insert into yaojinhong.职工 values('ZG000007','QW0003',4000)
insert into yaojinhong.职工 values('ZG000008','QW0003',5000)
insert into yaojinhong.职工 values('ZG000009','QW0002',4800)
insert into yaojinhong.职工 values('ZG000010','QW0004',6000)
insert into yaojinhong.供应商 values('S001','华广','深圳')
insert into yaojinhong.供应商 values('S002','广工','广州')
insert into yaojinhong.供应商 values('S003','美的','茂名')
insert into yaojinhong.供应商 values('S004','乐视','深圳')
insert into yaojinhong.供应商 values('S005','康佳','广州')
insert into yaojinhong.订购单 values('ZG000007','S005','OR0001','2015-1-6',5000,'2015-2-5')
insert into yaojinhong.订购单 values('ZG000002','S001','OR0002','2015-2-3',10000,'2015-3-4')
insert into yaojinhong.订购单 values('ZG000003','S004','OR0003','2015-2-17',3000,'2015-5-16')
insert into yaojinhong.订购单 values('ZG000006','S002','OR0004','2015-2-16',9000,'2015-4-18')
insert into yaojinhong.订购单 values('ZG000010','S005','OR0005','2015-3-20',8000,'2015-6-27')
insert into yaojinhong.订购单 values('ZG000001','S001','OR0006','2015-3-22',7500,'2015-7-29')
insert into yaojinhong.订购单 values('ZG000006','S003','OR0021','2015-2-15',4600,'2015-10-13')
insert into yaojinhong.订购单 values('ZG000004','S002','OR0007','2015-2-23',8500,'2015-8-29')
insert into yaojinhong.订购单 values('ZG000003','S005','OR0008','2015-1-5',3600,'2015-11-11')
insert into yaojinhong.订购单 values('ZG000001','S004','OR0009','2015-1-31',7600,'2015-12-14')
insert into yaojinhong.订购单 values('ZG000007','S001','OR0010','2015-3-25',12000,'2015-7-30')
insert into yaojinhong.订购单 values('ZG000008','S002','OR0011','2015-2-26',4600,'2015-9-27')
insert into yaojinhong.订购单 values('ZG000010','S002','OR0012','2015-1-28',3400,'2015-11-21')
insert into yaojinhong.订购单 values('ZG000009','S004','OR0013','2015-3-19',2300,'2015-10-24')
insert into yaojinhong.订购单 values('ZG000007','S005','OR0014','2015-2-23',9000,'2015-9-21')
insert into yaojinhong.订购单 values('ZG000008','S003','OR0015','2015-2-27',6400,'2015-12-23')
insert into yaojinhong.订购单 values('ZG000002','S001','OR0016','2015-1-30',7900,'2015-6-30')
insert into yaojinhong.订购单 values('ZG000005','S004','OR0017','2015-1-27',20000,'2015-8-18')
insert into yaojinhong.订购单 values('ZG000009','S004','OR0018','2015-3-5',13000,'2015-7-31')
insert into yaojinhong.订购单 values('ZG000004','S002','OR0019','2015-3-14',7000,'2015-6-17')
insert into yaojinhong.订购单 values('ZG000006','S005','OR0020','2015-2-21',4300,'2015-5-25')
insert into yaojinhong.订购单明细 values('OR0020','01','沐浴露',32,240)
insert into yaojinhong.订购单明细 values('OR0001','02','洗衣粉',30,125)
insert into yaojinhong.订购单明细 values('OR0012','03','洗衣液',39,59)
insert into yaojinhong.订购单明细 values('OR0014','04','香皂',14,99)
insert into yaojinhong.订购单明细 values('OR0004','05','盐',2,169)
insert into yaojinhong.订购单明细 values('OR0005','06','酱油',14,65)
insert into yaojinhong.订购单明细 values('OR0011','07','化妆品',26,24)
insert into yaojinhong.订购单明细 values('OR0019','08','洗面奶',39,68)
insert into yaojinhong.订购单明细 values('OR0008','09','面膜',5,147)
insert into yaojinhong.订购单明细 values('OR0003','10','花生油',36,258)
insert into yaojinhong.订购单明细 values('OR0017','11','鼠标',69,72)
insert into yaojinhong.订购单明细 values('OR0015','12','鼠标垫',18,64)
insert into yaojinhong.订购单明细 values('OR0016','13','移动电源',58,69)
insert into yaojinhong.订购单明细 values('OR0012','14','插座',37,169)
insert into yaojinhong.订购单明细 values('OR0011','15','牛奶',72,111)
insert into yaojinhong.订购单明细 values('OR0020','16','洗洁精',9,114)
insert into yaojinhong.订购单明细 values('OR0019','17','洁厕液',6,300)
insert into yaojinhong.订购单明细 values('OR0010','18','鸡蛋',14,124)
insert into yaojinhong.订购单明细 values('OR0009','19','牛肉',38,300)
insert into yaojinhong.订购单明细 values('OR0016','20','内裤',59,654)
insert into yaojinhong.订购单明细 values('OR0018','21','鞋子',299,300)
insert into yaojinhong.订购单明细 values('OR0015','22','手表',890,34)
insert into yaojinhong.订购单明细 values('OR0005','23','钱包',129,124)
insert into yaojinhong.订购单明细 values('OR0008','24','行李箱',344,64)
insert into yaojinhong.订购单明细 values('OR0014','25','手袋',3,874)
insert into yaojinhong.订购单明细 values('OR0018','26','篮球',360,59)
insert into yaojinhong.订购单明细 values('OR0003','27','足球',260,36)
insert into yaojinhong.订购单明细 values('OR0005','28','羽毛球拍',78,69)
insert into yaojinhong.订购单明细 values('OR0007','29','乒乓球拍',89,145)
insert into yaojinhong.订购单明细 values('OR0020','30','羽毛球',5,645)
insert into yaojinhong.订购单明细 values('OR0013','31','乒乓球',3,542)
insert into yaojinhong.订购单明细 values('OR0016','32','牙膏',23,200)
insert into yaojinhong.订购单明细 values('OR0009','33','牙刷',6,456)
insert into yaojinhong.订购单明细 values('OR0019','34','防晒霜',56,65)
insert into yaojinhong.订购单明细 values('OR0017','35','水杯',39,1187)
insert into yaojinhong.订购单明细 values('OR0010','36','拖把',15,187)
insert into yaojinhong.订购单明细 values('OR0004','37','扫把',6,200)
insert into yaojinhong.订购单明细 values('OR0005','38','垃圾桶',16,254)
insert into yaojinhong.订购单明细 values('OR0006','39','书',46,688)
insert into yaojinhong.订购单明细 values('OR0016','40','卫生纸',13,500)
insert into yaojinhong.订购单明细 values('OR0020','41','相机',3698,32)
insert into yaojinhong.订购单明细 values('OR0013','42','手机',2000,200)
insert into yaojinhong.订购单明细 values('OR0017','43','音响',500,143)
insert into yaojinhong.订购单明细 values('OR0001','44','吸尘器',1688,40)
insert into yaojinhong.订购单明细 values('OR0012','45','油烟机',3500,10)
insert into yaojinhong.订购单明细 values('OR0010','46','台式电脑',4000,25)
insert into yaojinhong.订购单明细 values('OR0013','47','空调',50,230)
insert into yaojinhong.订购单明细 values('OR0005','48','电视机',1300,100)
insert into yaojinhong.订购单明细 values('OR0016','49','洗衣机',3400,15)
insert into yaojinhong.订购单明细 values('OR0011','50','笔记本',6000,20)
insert into yaojinhong.仓库 values('QW0001','惠州',600)
原因:违反了PRIMARY KEY 约束'PK__仓库__530C599C7F60ED59'。不能在对象'yaojinhong.仓库' 中插入重复键。语句已终止。
insert into yaojinhong.职工 values('ZG000011','QW0009',3000)
原因:仓库号列参照仓库表的仓库号,此时在仓库表中找不到仓库号为QW0009的仓库。INSERT 语句与FOREIGN KEY 约束"FK__职工__仓库号__0AD2A005"冲突。该冲突发生于数据库"实验",表"yaojinhong.仓库", column '仓库号'。
insert into yaojinhong.仓库 values('QW0006','天津',30)
原因:在定义时,面积要大于等于50,这里面积为30,明显违反了用户定义完整性
delete yaojinhong.仓库 where 城市='北京'
删除 *** 作失败。因为有职工参照了干记录
delete yaojinhong.供应商 where 供应商号='S002'
因为删除参照完整性规则定义为set null
alter table yaojinhong.职工
drop constraint ck
alter table yaojinhong.职工
drop column 仓库号
alter table yaojinhong.职工
add 仓库号 char(6)constraint ck foreign key references yaojinhong.仓库
on delete cascade
on update cascade
update yaojinhong.职工 set 仓库号='QW0006' where 职工号='ZG000002'
更新 *** 作失败,因为职工表所参考的仓库表中不存在仓库号为QW0006的仓库。
update yaojinhong.仓库 set 仓库号=null where 仓库号='QW0001'
更新 *** 作失败,因为仓库号是关键字,不能为空。
update yaojinhong.仓库 set 面积=30 where 仓库号='QW0001'
更新 *** 作失败,因为面积被定义约束大于或等于50,此处面积=30,显然违反了约束。
update yaojinhong.职工 set 工资=(工资+(工资*0.1))
update yaojinhong.订购单 set 金额=(select SUM(单价*数量) from yaojinhong.订购单明细
where 订购单明细.订购单号=订购单.订购单号)
delete yaojinhong.职工 where 仓库号 in (select 仓库号 from yaojinhong.仓库 where 城市='北京')
delete yaojinhong.订购单 where 供应商号 in (select 供应商号 from yaojinhong.供应商 where 供应商名='广工')
实验4
1 select distinct 工资 from yaojinhong.职工
select all 工资 from yaojinhong.职工
2 select * from yaojinhong.仓库
3 select 职工号 from yaojinhong.职工 where 工资>5000
4 select * from yaojinhong.仓库 where 仓库号 in(select 仓库号 from yaojinhong.职工 where 工资>5000)
5 select 职工号 from yaojinhong.职工 where 仓库号 in ('QW0005','QW0002') and 工资<5000
6 select * from yaojinhong.职工 where 工资 between 3000 and 5000
7 select * from yaojinhong.供应商 where 供应商名 like '%公司'
8 select * from yaojinhong.仓库 where 城市!='北京
9 select * from yaojinhong.订购单 where 供应商号 is null
10 select * from yaojinhong.订购单 where 供应商号 is not null
11 select * from yaojinhong.职工 order by 工资 ASC
12 select * from yaojinhong.职工 order by 仓库号 ASC,工资 DESC
13 select 职工号,城市 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号 where 工资>6000
14 select 职工号,城市 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号 where 面积>700
16 select * from yaojinhong.仓库 cross join yaojinhong.职工
17 select * from yaojinhong.仓库 cross join yaojinhong.职工
where 仓库.仓库号=职工.仓库号
18 select 供应商.供应商号,供应商名,订购单号,订购日期 from yaojinhong.供应商 join yaojinhong.订购单
on 供应商.供应商号=订购单.供应商号
19 select 供应商.供应商号,供应商名,订购单号,订购日期 from yaojinhong.供应商 left join yaojinhong.订购单
on 供应商.供应商号=订购单.供应商号
20 select 供应商.供应商号,供应商名,订购单号,订购日期 from yaojinhong.供应商 right join yaojinhong.订购单 on 供应商.供应商号=订购单.供应商号
21 select 供应商.供应商号,供应商名,订购单号,订购日期 from yaojinhong.供应商 full join yaojinhong.订购单 on 供应商.供应商号=订购单.供应商号
22 select 城市 from yaojinhong.仓库 where 仓库号 in
(select 仓库号 from yaojinhong.职工 where 工资=3300)
23 select * from yaojinhong.仓库 where 仓库号 not in
(select 仓库号 from yaojinhong.职工 where 工资<5000)
24 select * from yaojinhong.职工 where 工资 in
(select 工资 from yaojinhong.职工 where 职工号='ZG000001')
and 职工号!='ZG000001'
25 select 城市 from yaojinhong.仓库 where 仓库号 in
(select 仓库号 from yaojinhong.职工 where 职工号 in
(select 职工号 from yaojinhong.订购单 where 供应商号 in
(select 供应商号 from yaojinhong.供应商 where 地址='广州')))
26 select 供应商名 from yaojinhong.供应商 join yaojinhong.订购单 on 供应商.供应商号=订购单.供应商号 join yaojinhong.职工 on 订购单.职工号=职工.职工号 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号 where 地址='广州'and 城市='广州'
select 供应商名
from yaojinhong.供应商 where 地址='广州' and 供应商号 in
(select 供应商号 from yaojinhong.订购单 join yaojinhong.职工 on 订购单.职工号=职工.职工号
join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号 where 城市='广州')
27 select 仓库号 from yaojinhong.仓库 where 仓库号 in
(select 仓库号 from yaojinhong.职工 where 工资>any
(select 工资 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号
where 仓库.仓库号='QW0001')and 仓库号!='QW0001')
28 select 仓库号 from yaojinhong.仓库 where 仓库号 in
(select 仓库号 from yaojinhong.职工 where 工资>all
(select 工资 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号
where 仓库.仓库号='QW0001'))
29 select * from yaojinhong.订购单 a where 金额=
(select MAX(金额) from yaojinhong.订购单 b where a.职工号=b.职工号)
order by 职工号 ASC
30 select * from yaojinhong.仓库 where exists(select * from yaojinhong.职工 where 职工号 is null and 职工.仓库号=仓库.仓库号)
31 select * from yaojinhong.仓库 where not exists(select * from yaojinhong.职工 where 职工号 is null and 职工.仓库号=仓库.仓库号)
32 select COUNT(distinct 城市)城市数目 from yaojinhong.仓库 where 城市 is not null
33 select SUM(工资)需要支付职工工资总数 from yaojinhong.职工
34 select SUM(工资)北京和上海的仓库职工的工资总和 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号
where 城市='北京' or 城市='上海'
35 select AVG(面积)平均面积 from yaojinhong.仓库 where 仓库号 not in
(select 仓库号 from yaojinhong.职工 where 工资<6000)
36 select max(金额)工资大于的职工所经手的订购单最高金额 from yaojinhong.订购单 where 职工号 in
(select 职工号 from yaojinhong.职工 where 工资>6000)
37 select 仓库号,AVG(工资)平均工资 from yaojinhong.职工
group by 仓库号
38 select 仓库号,max(金额)最高金额,MIN(金额)最低金额,AVG(金额)平均金额 from yaojinhong.职工 join yaojinhong.订购单 on 职工.职工号=订购单.职工号 group by 仓库号
39 select 订购单.订购单号,AVG(金额)平均金额 from yaojinhong.订购单 join yaojinhong.订购单明细 on 订购单.订购单号=订购单明细.订购单号
group by 订购单.订购单号 having COUNT(订购单.订购单号)>=5
40 select 仓库号,职工号,工资 from yaojinhong.职工
order by 仓库号
compute avg(工资),sum(工资)by 仓库号
compute avg(工资),sum(工资)
41select 订购单明细.订购单号,序号,产品名称,单价,数量,金额
from yaojinhong.订购单明细 join yaojinhong.订购单 on
订购单.订购单号=订购单明细.订购单号 order by 订购单.订购单号
compute avg(金额),sum(金额)by 订购单.订购单号
compute avg(金额),sum(金额)
42 select * from yaojinhong.订购单
compute avg(金额),sum(金额)
实验5
一
(1) 基于单个表按投影 *** 作定义视图。
create view yaojinhong.仓库视图 as select * from yaojinhong.仓库
(2) 基于单个表按选择 *** 作定义视图。
create view yaojinhong.仓库视图1 as select * from yaojinhong.仓库 where 城市='广州'
(3) 基于单个表按选择和投影 *** 作定义视图。
create view yaojinhong.仓库视图2 as select 仓库号,面积 from yaojinhong.仓库 where 城市='广州'
(4) 基于多个表根据连接 *** 作定义视图。
create view yaojinhong.视图3 as select 职工号,城市,工资 from yaojinhong.职工 join yaojinhong.仓库 on 职工.仓库号=仓库.仓库号
(5) 基于多个表根据嵌套查询定义视图。
create view yaojinhong.视图4 as select * from yaojinhong.仓库 where 仓库号 in
(select 仓库号 from yaojinhong.职工 where 工资>4000)
(6) 定义含有虚字段的视图。
create view yaojinhong.虚字段视图(仓库号,城市,面积) as select 仓库号,城市,面积*2 from yaojinhong.仓库
2、分别在定义的视图上设计一些查询(包括基于视图和基本表的连接或嵌套查询)。
select * from yaojinhong.仓库视图
select * from yaojinhong.仓库视图1 where 城市='广州'
select 仓库号,面积 from yaojinhong.仓库视图2
select 职工号,城市,工资 from yaojinhong.职工 join yaojinhong.仓库视图 on 职工.仓库号=仓库视图. 仓库号
select * from yaojinhong.仓库视图 where 仓库号 in
(select 仓库号 from yaojinhong.职工 where 工资>4000)
3、在不同的视图上分别设计一些插入、更新和删除 *** 作,分情况讨论哪些 *** 作可以成功完成,哪些 *** 作不能完成,并分析原因。
insert into yaojinhong.仓库视图(仓库号,城市) values('QW0008','长沙')
update yaojinhong.仓库视图 set 面积=650 where 仓库号='QW0008'
insert into yaojinhong.仓库视图 values('QW0008','长沙',500)
update yaojinhong.仓库视图 set 面积=700 where 仓库号='QW0001'
delete yaojinhong.仓库视图 where 仓库号='QW0008'
delete yaojinhong.仓库视图 where 仓库号='QW0008'
这个书上应该都有的啊1.需求分析阶段准确了解与分析用户需求(包伏仿衡括数据与处理)
是整个设计过程的基础,是最困难、最耗费时间的一步
2.概念结构设计阶段
是整个数据库设计的关键
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型
3.逻辑结构设计阶段
将概念结构转换为某个DBMS所支持的数据模型
对其进行优化
4.数据库物理设计阶段
为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)
5.数据库实施阶段
运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果
建立数据库,编制与调缺做试应用程序,组织数据入库,并进行试运行
6.数据库运行和维护阶段
数据库应用系统经过试运行后即可投入正大袜式运行。
//顺序栈#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
int *base
int *top
int stacksize
}SqStack
typedef int ElemType
int InitStack(SqStack &S) //为栈S分配存储空间,并置S为空栈
{
int size = STACK_INIT_SIZE
S.base=(int *)malloc(size*sizeof(ElemType))
if(!S.base)
return 0
S.top=S.base//置栈S为空栈
S.stacksize=STACK_INIT_SIZE
return 1
}
int GetTop(SqStack S,int &e) //若栈不空,则用e返回S的栈顶元素
{
if(S.top==S.base) return 0
e=*(S.top-1)
return 1
}
int Push(SqStack &S, int e) /*进栈函数,将e插入栈S中,并使之成为栈顶元素*/
{ if(S.top-S.base>=S.stacksize) /*栈满,追加存储空间*/
{
int stackinvrement = STACKINCREMENT
S.base=(ElemType *) realloc(S.base,(S.stacksize+stackinvrement)*sizeof(ElemType))
if(!S.base)
return 0/*存储分配失败*/
S.stacksize+=STACKINCREMENT
}
*S.top++=e
return 1
}
int Pop(SqStack &S,int &e)/*出栈函数,若栈S不空,则删除S的栈顶元素,用e返回其值*/
{ if(S.top==S.base) return 0
e=*--S.top
return 1
}
void OutputStack(SqStack &S)
{int *q
q=S.top-1
for(int i=0i<S.top-S.basei++)
{
printf("%3d ",*q)q--}
}
void main()
{
int a,b,c
char m
SqStack s
InitStack(s)
printf("请输入要歼燃进栈的元素个数是:")
scanf("%d",&a)
printf("\n请输入要进栈的%d个元素:",a)
for(b=0b<ab++) {
scanf("%d",&c)
Push(s,c)}
do { printf("\n")
printf("*********** 1.输出栈的元素**********\n")
printf("*********** 2.取栈顶元素************\n")
printf("*********** 3.删除栈顶元素**********\n")
printf("*********** 4.退出程序**********\n")
printf("\n请选择一个字符:")
getchar()
scanf("%c",&m)
switch(m) {
case '1': printf("\n输出的竖虚栈为:"余改燃)
OutputStack(s)
break
case '2': GetTop(s,c)
printf("\n栈顶元素为:%d",c)
printf("\n输出的栈为:")
OutputStack(s)
break
case '3': Pop(s,c)
printf("\n删除的栈顶元素:%d",c)
printf("\n输出的栈为:")
OutputStack(s)
printf("\n")
break
case '4':break
default: printf("输入的数字有错,请重新选择!\n")break
}
}while(m!='4')
}
//链栈
#include<stdio.h>
#include<stdlib.h>
typedef struct SNode
{
int data
struct SNode *next
}SNode,*LinkStack
LinkStack top
LinkStack PushStack(LinkStack top,int x)//入栈
{
LinkStack s
s=(LinkStack)malloc(sizeof(SNode))
s->data=x
s->next=top
top=s
return top
}
LinkStack PopStack(LinkStack top) //退栈
{
LinkStack p
if(top!=NULL)
{
p=top
top=top->next
free(p)
printf("退栈已完成\n")
return top
}
else printf("栈是空的,无法退栈!\n")return 0
}
int GetStackTop(LinkStack top)//取栈顶元素
{
return top->data
}
bool IsEmpty()//bool取值false和true,是0和1的区别,bool只有一个字节,BOOL为int型,bool为布尔型
{
return top==NULL ? true:false
}
void Print()
{
SNode *p
p=top
if(IsEmpty())
{
printf("The stack is empty!\n")
return
}
while(p)
{
printf("%d ", p->data)
p=p->next
}
printf("\n")
}
void main()
{
int x,a,b
char m
do { printf("\n")
printf("###############链栈的基本 *** 作##################\n")
printf("××××××××1.置空栈××××××××××\n")
printf("××××××××2.进栈×××××××××××\n")
printf("××××××××3.退栈×××××××××××\n")
printf("××××××××4.取栈顶元素××××××××\n")
printf("××××××××5.退出程序×××××××××\n")
printf("##############################################\n")
printf("\n请选择一个字符:")
scanf("%c",&m)
switch(m){
case '1':
top=NULL
printf("\n栈已置空!")
break
case '2':
printf("\n请输入要进栈的元素个数是:")
scanf("%d",&a)
printf("\n请输入要进栈的%d个元素:",a)
for(b=0b<ab++) {
scanf("%d",&x)
top=PushStack(top,x)}
printf("进栈已完成!\n")
printf("\n输出栈为:")
Print()
break
case '3':
printf("\n *** 作之前的输出栈为:")
Print()
top=PopStack(top)
printf("\n *** 作过后的输出栈为:")
Print()
break
case '4':
printf("\n输出栈为:")
Print()
if(top!=NULL)
printf("\n栈顶元素是:%d\n",GetStackTop(top))
else
printf("\n栈是空的,没有元素!")
break
case '5':break
default:
printf("\n输入的字符不对,请重新输入!")
break
}
getchar()
}while(m!='5')
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)