sql 数据库 实验九:T-SQL语言、存储过程及数据库的安全性

2024-08-01

sql 数据库 实验九:T-SQL语言、存储过程及数据库的安全性(9篇)

1.sql 数据库 实验九:T-SQL语言、存储过程及数据库的安全性 篇一

数据库技术及应用

第五章 VFP数据库的操作

班级:

姓名:

学号:

成绩:

一、选择题

1. 1.命令SELECT 0 的功能是__A____。

A、选择区号最小的空闲工作区

B、选择区号最大的空闲工作区

C、选择当前工作区的区号加1的工作区 D、随机选择一个工作区的区号

A、工作区的系统别名和用户定义的数据表别名可以交替使用 B、在某个工作区打开的数据表原名和工作区别名可以交替使用 C、在某个工作区打开的数据表原名和数据表别名可以交替使用 D、在选择工作区时,可以用工作区号、系统别名或打开的数据表别名

D、物理排序 2.以下叙述中,错误的是___C___。

3.VFP中的SET RELATION关联操作是一种__A____。

A、逻辑连接 B、物理连接 C、逻辑排序

4.建立两个数据表关联,要求_____D_。

A、两个数据表都必须排序

B、关联的数据表必须排序

C、两个数据表都必须索引

D、被关联的数据表必须索引

5.下列叙述正确的是__C____。

A、一个数据表被更新时,它所有的索引文件会自动被更新 B、一个数据表被更新时,它所有的索引文件不会自动被更新 C、一个数据表被更新时,处于打开状态下的索引文件会自动被更新

D、当两个数据表用SET RELATION TO 命令建立关联后,调节任何一个数据表的指针时,另一个数据表的指针将会同步移动 __B____。

A、USE STD1

C、USE STD1 6.两个数据表结构相同,若要将STD1.DBF中的纪录追加到STD2.DBF之后,应使用命令组

B、USE STD2

APPEND FROM STD1 D、USE STD2 APPEND TO STD2

COPY TO STD2

COPY FROM STD1 7.VFP中,下列概念中正确的是__A____。

A、在同一个工作区中,某一时刻只能有一个表文件处于打开状态 B、一个表文件可以在不同的工作区中同时打开

C、UPDATE命令中的两个表必须按相同关键字建立索引

D、JOIN命令生成的表文件可以与被连接的表在一个工作区内同时打开

1.B 2.A 3.C 4.A 5.A 6.C 7.D 8.B 9.C 10.D 11.A 12.D 13.A 14.C 15.C 16.D 17.B 18.B

数据库技术及应用

第六章 SQL语言的应用

1.下列命令中,用于打开数据库设计器的是__B____。

A、CREATE DATABASE C、SET DATABASE TO A、DROP TABLE ABC.DBF

B、OPEN DATABASE D、MODIFY DATABASE

B、ALTER TABLE ABC.DBF 2.从数据库中删除数据表ABC.DBF的命令是___A____。

C、DELETE TABLE ABC.DBF 学生与课程之间的联系是_______。

A、一对一

B、一对多

C、多对多

D、未知

4.要在数据库中的各个数据表之间建立一对多关系,“一方”的关键字段首先必须建立______。

A、主索引 B、候选索引

C、普通索引

D、唯一索引

5.下列有关索引的说法中,正确的是_______。

A、候选索引既可以在自由表中创建,也可以在数据库表中创建 B、建立主索引的主关键字值不能为空,但可以有重复数值 C、建立候选索引的候选关键字值不能有重复值,但可以为空 D、建立唯一索引的索引关键字值不能有重复值 A、插入规则 B、删除规则

C、查询规则

D、更新规则

D、REMOVE TABLE ABC.DBF 3.已知在教学环境中,一名学生可以选择多门课程,一门课程可以被多个学生选择,这说明6.VFP关于数据库的参照完整性规则不包括_______。7.关于视图与查询,以下说法错误的是_______。

A、查询和视图都可以从一个或多个表中提取数据 B、查询是作为文本文件,以扩展名.QPR存储的 C、可以通过视图更改数据源表的数据

D、视图是完全独立的,它不依赖于数据库的存在而存在

D、图形 8.下列几项中,不能作为查询输出的目标是______。

A、临时表

B、视图

C、标签 9.以下关于主索引,正确的说法是______。

A、在自由表和数据库表中都可以建立主索引 B、可以在一个数据库表中建立多个主索引 C、数据库中任何一个数据表只能建立一个主索引 D、主索引的关键字值可以为NULL A、只能由自由表创建查询 C、只能由数据库表创建查询 A、MODIFY VIEW

B、不能由自由表创建查询

D、可以由各种数据表创建查询

B、RENAME VIEW 10.以下关于查询的描述中,正确的是______。

11.VFP修改本地视图的命令是______。

C、CHANGE VIEW

D、CREATE SQL VIEW 12.标准的SQL基本查询模块的结构是______。

A、SELECT … FROM … ORDER BY B、SELECT … WHERE … GROUP BY C、SELECT … WHERE … HAVING

D、SELECT … FROM … WHERE

13.SQL查询语句中,ORDER BY 子句的功能是______。

A、对查询结果进行排序

B、分组统计查询结果

C、限定分组检索结果

D、限定查询条件 14.SQL语句中修改表结构的命令是______。数据库技术及应用

第六章 SQL语言的应用

A、MODIFY TABLE

B、MODIFY STRUCTURE C、ALTER TABLE

D、DROP TABLE 15.SQL语句中INSERT命令的功能是______。

A、在表头插入一条记录 C、在表尾插入一条记录 A、数据定义

B、在表中指定位置插入一条记录 D、在表中指定位置插入若干条记录 B、数据查询

D、修改表中某些列的内容 B、CREAT VIEW D、CREAT CURSOR 16.SQL语句中UPDATE命令的功能是______。

C、更新表中某些列的属性

17.建立视图的SQL命令是______。

A、CREATE TABLE

C、CREATE INDEX

18.在设置数据库中的数据表间的永久关系时,以下说法正确的是______。

A、父表必须建立主索引,子表可以不建立索引 B、父表必须建立主索引,子表可以建立普通索引 C、父表必须建立主索引,子表必须建立候选索引 D、父表、子表都必须建立主索引

2.sql 数据库 实验九:T-SQL语言、存储过程及数据库的安全性 篇二

2. 熟悉掌握asp语言的应用

3. 掌握asp的页面结构和内置对象

4. 掌握asp与sql server数据库的连接和应用

5. 掌握asp 另外一个重要的语言——javascript,并熟悉它的应用

6.制作一个功能完善的考务管理系统

7.能够独立的完成系统策划,系统分析和程序的编写

8.提高发现问题,解决问题的能力

二、实验内容

制作一个考务管理系统,用于从考生报名、产生准考证到录取考生和打印成绩单即对考生考试和录取全过程的考务管理,系统要实现的功能有:考生报名,按报名顺序产生报名号;产生准考证号和打印准考证;输入考生成绩和输入录取合格标准;根据合格标准录取上线考生;打印考生成绩单和录取通知书;设置系统用户和系统初始化。

三、实验环境

1、windows xp或 windows XX;

2、安装 microsoft sql server XX 个人版。

3、iis 5.0及以上版本和浏览器ie5.5及以上版本

4、macromedia dreamwezver8等相关软件

四、实验步骤

首先:配置环境,安装sql server,macromedia dreamwezver8。

第二:对要做的系统进行构思、策划、布局。

第三:建立数据库kaoshi及数据表:学生信息表(student),用户表(yonghu),考生表(biaozhun)。

第四:建立连接数据库的文件conn.asp,其代码如下所示:

<%

set conn=server.createobject(“adodb.connection”)

conn.open “provider=sqloledb;” & “data source=localhost;initial catalog=ksd;user id=sa;password=100200;”

%>

第五:制作各个网页并联接所有需要联接的网页。

第六:运行整个系统,查找是否有错误,并进行修改直至整个系统运行无误。

五、实验过程与分析

(一)系统分析与总体设计

现在用计算机来进行考生的管理及考生的录取已普遍存在。因如果用人来进行这项工作将十分烦琐,系统管理员需要划分很多的时间和精力,而且还不能保证其正确率。

而用考务管理系统可以简化管理员的工作,还会提高工作的正确率。以下将对考务管理系统进行系统分析和设计。

(1)系统的功能描述

考务管理系统包括学生报名管理、考生成绩管理系统维护三大模块。

考生报名管理 包括报名处理、产生准考证、打印准考证和退出系统等4项功能。

考生成绩管理 包括考生成绩录入、合格标准录入、录取考生、打印成绩单和打印录取通知单等5项功能。

系统维护 包括用户设置和系统初始化等2项功能。

用户通过系统菜单执行相应的操作。

(2)数据库设计

本系统以sql server XX作为数据库平台。在sql server XX中设计一个数据库kaoshi,其中包含如下数据表。

1.student表

该表用于存放所有考生记录,包括基本数据.表的结构如图2所示。

2biaozhun表

该表用于存放录取考生的合格标准,其中只有一个记录,该记录指出各门课程的最低分和总分的最低分。只有各门成绩和总分都超过这个标准的考生才能被录取。该表的结构如图3所示。

3.yonghu表

该表用于存放本系统用户的信息。包括用户的用户名、密码和级别(只分“一般操作员”和“系统管理员”两类)。该表结构如图4所示。

六、实验结果与总结

实验中的考务管理系统是经过很多次的测试、修改再测试、再修改才完成的。也就是在多次的测试修改的过程中使我学发现了很多平时上课发现不了的问题,也发现了自己学习这门课程的薄弱的地方和学的不足的地方。通过实验期间的发现问题、分析问题、查找问题原因、解决问题及进一步完善考务管理系统的过程,我的能力和水平有一定程度的提高。经过一次独立完成系统给我以后编程打下了基础,让我面对的不再是茫然和无措,而是有条不紊的思绪和完成的信心。所以这次实验对我来说是一笔极大的财富。

3.sql 数据库 实验九:T-SQL语言、存储过程及数据库的安全性 篇三

-06-06sqlserver 存储过程分页(按多条件排序)

-10-10sqlserver数据库迁移后,孤立账号解决办法

2010-03-03数据结构简明备忘录 线性表

-03-03海量数据库的查询优化及分页算法方案

2011-09-09简单触发器的使用 献给SQL初学者

2010-07-07分发服务器 系统抛出18483错误,未能连接服务器,因为'distribu

2010-09-09sql根据表名获取字段及对应说明

2010-04-04sqlserver 此数据库没有有效所有者错误的解决方法

4.数据库实验报告九 篇四

一 实验目的理解身份验证模式;

理解登录账号、服务器角色、数据库角色和数据库用户,以及之间的关系; 能够创建登录账号,创建数据库角色;

能够为数据库用户分配权限;

二 实验内容

(1)建立一个为SQL Server登录账号student1。

(2)将该帐号映射至数据库:学生课程数据库。

(3)指定登录账号student1的服务器角色为sysadmin。

(4)授予用户账号student1的数据库角色为db_owner。

(5)授予用户账号student1的对象权限为数据库中的基本表操作,语句权限为允许SELECT

5.sql 数据库 实验九:T-SQL语言、存储过程及数据库的安全性 篇五

问题:从数据库中读出的中文均为“?”

解决方案:

Step 1:注册 Code Page使SQL Server支持中文

1.复制文件C_936.nls到系统目录下的system32目录

2.使用Regedit32.exe增加以下键:

location: HKEY_LOCAL_MACHINEsystemCurrentControlSetControlNlsCode

Page

value name: 936

value: C_936.NLS

location: HKEY_LOCAL_MACHINEsystemCurrentControlSetControlNlsLang

uage

value name: 0804

value: l_intl.nls

3.使用简体中文字符集重建SQL server的Master数据库

Step 2.

在ASP程序的开头中加入一行:

<%@ codepage=936 %>

这个解决方案好处是不用安装中文平台系统,又可以稳定运行NT(英文企业版较

6.IC卡数据循环存储及文件管理 篇六

摘要:一种I2C总线型EEPROM存储器,在数据记录系统中,用来保存当前时刻以前一段时间内的多组数据。使用时设计成首尾地址相接的环型存储结构,实现数据文件的循环存储。文章介绍循环存储器的结构、循环存储的实现方法以及文件管理的过程;指出该方法的优越性。

关键词:EEPROM 循环存储 I2C总线 IC卡

绝大多数的IC卡采用的都是I2C总线型的EEPROM存储器。在现场数据记录系统中,经常需要保存的是当前时刻之前一段时间内的数据。由于EEPROM单字节写入时间太长,不易采用数据在存储器中内整体位置移动的方法管理;而单纯采用自存储器顶端向下顺序写入的方法,会出现存储器写满的现象。为解决这个问题,我们设计了环型存储的管理方法,使用首尾相接的存储环,配合以目录管理功能,完成顺的循环写入,实现了EEPROM存储器内文件的的高效保存和管理。

1 存储器及文件目录结构

这里以1片4KB的I2C总线型EEPROM为例。微处理器采用Atmel的AT89S52;EEPROM的0000H~003FH作为IC卡内文件的目录管理区,为直线结构;目录区最多可以记录30个数据文件。存储器及目录结构如图1所示。0040H~0FFFH设计成首尾相接的环型存储结构,用来作为文件存储区。数据文件从0040H处开始依次记入,每写入一个字节,地址指针自动加1,然后判断该指针是否到了存储环的.交界处。地址过界,即地址大于0FFFH时,将写入地址指针再修改成0040H,将最早形成的文件记录自动覆盖掉。AT89S52内部RAM的40H~7FH作为EEPROM文件目录区的映像,系统复位后由单片机将EEPRM中0000H~003FH的内容读出并记入到该映像区。每一组现场数据作为一个记录文件输入后,单片机都要及时修改目录映像中当前文件的结束地址。每建立一个新文件记录,映像区整个数据都要向地址增大方向移动2个字节,超出7DH的自动丢弃。新建立的文件首位地址记入40H~43H,最后将该映像再重新写回到EEPROM目录区。文件目录中只有当前文件记录了起始地址和结束地址。当前文件的起始地址是前一文件结束地址的下一个地址,因此在前文件只记录其起始地址。目录区没有文件的空间用#0FFH填充。另外,每一个文件的长度不应超过文件数据存储区的总长度。单个文件的长度越短,存储器可存储的文件数越多。存储器的大小可视一般记录文件和系统要求而定。

2 存储器清除及文件建立

在IC卡第一次使用之前,首先应该通过功能程序将卡内目录管理区清空,即将0000H~003DH写入#0FFH.。003EH写入#00H,表示卡内没有文件。003FH写入自定义的卡编写,这一过程需要0.6s完成。只有使用经过初始清除处理的IC卡,才能保证后续文件建立和数据写入的正确性。

7.sql 数据库 实验九:T-SQL语言、存储过程及数据库的安全性 篇七

SELECT <目标列名序列> -- 需要哪些列

FROM <表名> -- 来自于哪些表

[WHERE <行选择条件>] -- 根据什么条件

[GROUP BY <分组依据列>] --分组依据

[HAVING <组选择条件>]

[ORDER BY <排序依据列>]

<目标列名序列>部分能够包含的内容有如下结构:

SELECT [ ALL | DISTINCT ]

[ TOP expression [ PERCENT ] [ WITH TIES ] ]

::=

{

*

| { table_name | view_name | table_alias }.*

| {

[ { table_name | view_name | table_alias }. ]

{ column_name | $IDENTITY } } ]

| expression

[ [ AS ] column_alias ] }

| column_alias = expression

8.如何完全卸载SQL数据库 篇八

1,控制面板卸载

首先,打开控制面板,按照“安装时间”进行排序,卸载SQL Server系列组件

2,利用360删除SQL Server系列组件(同样按照时间排序)

3,利用Windows Install Clean Up软件

微软自己出的卸载软件,用它可以完美卸载Microsoft的系列软件。利用 Windows Installer 清理实用工具,可以删除程序的 Windows Installer 配置信息。如果您遇到安装(安装程序)问题,可能需要删除程序的 Windows Installer 配置信息。

例如,第一次安装程序时没有包括其中的某个组件,如果添加(或删除)此组件时遇到安装问题,您也许不得不删除该程序的 Windows Installer 配置信息。

4,手动卸载,手工来进行删除操作。

(1) 删除以下注册表子项:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSSQLServer

HKEY_LOCAL_MACHINESOFTWAREMicrosoft Microsoft SQL Server

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSSQLServer

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesSQLSERVER AGENT

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices MSSQLServerADHelper

(2) 手工删除安装目录,默认情况下位于:

C:Program FilesMicrosoft SQL Server

C:Program Files (x86)Microsoft SQL Server

C:UsersAdministrator请仔细查找……

(3) 卸载Microsoft Search 服务,还需要删除:

HKEY_LOCAL_MACHINESOFTWAREMicrosoftSearch

(4) 卸载Microsoft 全文查询,还需要删除:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSFTPSVC

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSSCNTRS

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSSEARCH

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSSGATHERVER

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSSGTHRSVC

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesMSSINDEX

(5)如果要卸载的是命名实例,则在相应的注册表键的MSSQLServer,SQLSERVERAGENT和MSSQLServerADHelper后加上“/”和相应的实例名。

到此我们就成功的完美卸载了SQL SERVER数据库。

9.sql 数据库 实验九:T-SQL语言、存储过程及数据库的安全性 篇九

班级: 2010XXX 姓名: HoogLe 学号: 2010XXXX 专业: XXXX

2858505197@qq.com

一、实验目的:

(1)掌握单链表的基本操作的实现方法。(2)掌握循环单链表的基本操作实现。(3)掌握两有序链表的归并操作算法。

二、实验内容:(请采用模板类及模板函数实现)

1、线性表链式存储结构及基本操作算法实现

[实现提示](同时可参见教材p64-p73页的ADT描述及算法实现及ppt)函数、类名称等可自定义,部分变量请加上学号后3位。也可自行对类中所定义的操作进行扩展。所加载的库函数或常量定义: #include using namespace std;(1)单链表存储结构类的定义: template class LinkList{ public: LinkList();//初始化带头结点空单链表构造函数实现

LinkList(T a[],int n);//利用数组初始化带头结点的单链表构造函数实现

~LinkList();int length();//求单链表表长算法

T get(int i);//获得单链表中第i个结点的值算法

int locate(T temp);void insert(int i,T temp);//在带头结点单链表的第i个位置前插入元素e算法

T Delete(int i);//在带头结点单链表中删除第i个元素算法

void print();//遍历单链表元素算法

bool isEmpty();//判单链表表空算法

void deleleAll();//删除链表中所有结点算法(这里不是析构函数,但功能相同)private: Node *head;};(2)初始化带头结点空单链表构造函数实现 输入:无

前置条件:无

动作:初始化一个带头结点的空链表 输出:无

后置条件:头指针指向头结点。

//初始化带头结点空单链表构造函数实现 template LinkList::LinkList(){ head = new Node;head->next = NULL;}

(3)利用数组初始化带头结点的单链表构造函数实现 输入:已存储数据的数组及数组中元素的个数 前置条件:无

动作:利用头插或尾插法创建带头结点的单链表 输出:无

后置条件:头指针指向头结点,且数组中的元素为链表中各结点的数据成员。//利用数组初始化带头结点的单链表构造函数实现 template LinkList::LinkList(T a[],int n){ head=new Node;head->next=NULL;for(int i=0;i *s=new Node;s->data=a[i];s->next=head->next;head->next=s;} }(4)在带头结点单链表的第i个位置前插入元素e算法 输入:插入位置i,待插入元素e 前置条件:i的值要合法

动作:在带头结点的单链表中第i个位置之前插入元素e 输出:无

后置条件:单链表中增加了一个结点

//在带头结点单链表的第i个位置前插入元素e算法 template void LinkList::insert(int i,T temp){ Node *p = head;int count = 0;while(p&&count

p=p->next;

count++;} if(p==NULL)cout<<“i不合法,越界!”;else{

Node *s = new Node;

s->data = temp;

s->next = p->next;

p->next = s;} }(5)在带头结点单链表中删除第i个元素算法 输入:删除第i个结点,待存放删除结点值变量e 前置条件:单链表不空,i的值要合法

动作:在带头结点的单链表中删除第i个结点,并返回该结点的值(由e传出)。输出:无

后置条件:单链表中减少了一个结点

//在带头结点单链表中删除第i个元素算法 template T LinkList::Delete(int i){ Node *p = head;int count = 0;while(p&&count

p=p->next;

count++;} if(p==NULL)cout<<“i不合法,越界!”;else{

Node *s = p->next;

T x= s->data;

p->next = s->next;

return x;} }(6)遍历单链表元素算法 输入:无

前置条件:单链表不空

动作:遍历输出单链表中的各元素。输出:无

后置条件:无

//遍历单链表元素算法 template void LinkList::print(){ Node *p = head->next;while(p){

cout<

data<<“ ”;

p=p->next;} cout<

(7)求单链表表长算法。输入:无

前置条件:无

动作:求单链表中元素个数。输出:返回元素个数 后置条件:无

//求单链表表长算法 template int LinkList::length(){ Node *p = head;int count = 0;while(p){

p=p->next;

count++;} return--count;}

(8)判单链表表空算法 输入:无

前置条件:无

动作:判表是否为空。

输出:为空时返回1,不为空时返回0 后置条件:无 //判断非空

template bool LinkList::isEmpty(){ Node *p = head->next;if(p)return true;else return false;}

(9)获得单链表中第i个结点的值算法 输入:无

前置条件:i不空,i合法 动作:找到第i个结点。

输出:返回第i个结点的元素值。后置条件:无

//获得单链表中第i个结点的值算法 template T LinkList::get(int i){ Node *p = head;int count = 0;while(p&&count

p=p->next;

count++;} if(p==NULL)cout<<“i不合法,越界!”;else{

return p->data;} }

(10)删除链表中所有结点算法(这里不是析构函数,但功能相同)输入:无

前置条件:单链表存在

动作:清除单链表中所有的结点。输出:无

后置条件:头指针指向空 //删除所有元素 template void LinkList::deleleAll(){ Node *p = head;while(p){

Node *t=p;

p=p->next;

t->next=NULL;} }

(11)上机实现以上基本操作,写出main()程序: 参考p72 void main(){ int a[10]={1,2,3,4,5,6,7,8,9,0};//测试带参数的构造函数(前端插入!)

LinkList list1(a,10);//测试插入

if(list1.isEmpty()){ cout<<“链表不为空!”<

cout<<“链表为空!”<

2、参考单链表操作定义与实现,自行完成单循环链表的类的定义与相操作操作算法。template class LinkList{ public: LinkList(T a[],int n);//利用数组初始化带头结点的单循环链表构造函数实现

void insert(int i,T temp);//在带头结点单循环链表的第i个位置前插入元素e算法

T Delete(int i);//在带头结点单循环链表中删除第i个元素算法

void print();//遍历单循环链表元素算法 private: Node *head;int length;};(1)利用数组初始化带头结点的单循环链表构造函数实现 输入:已存储数据的数组及数组中元素的个数 前置条件:无

动作:利用头插或尾插法创建带头结点的单循环链表 输出:无

后置条件:头指针指向头结点,且数组中的元素为链表中各结点的数据成员,尾指针指向头结点。

//利用数组初始化带头结点的单循环链表构造函数实现 template LinkList::LinkList(T a[],int n){ head=new Node;head->next= head;length = 0;for(int i=0;i *s=new Node;s->data=a[i];

s->next = head->next;head->next=s;

length++;} }

(2)在带头结点单循环链表的第i个位置前插入元素e算法 输入:插入位置i,待插入元素e 前置条件:i的值要合法

动作:在带头结点的单循环链表中第i个位置之前插入元素e 输出:无

后置条件:单循环链表中增加了一个结点

//在带头结点单循环链表的第i个位置前插入元素e算法 template void LinkList::insert(int i,T temp){ cout<length< *p = head;int count = 0;if(i>length)cout<<“i不合法,越界!”;else{

while(count

p=p->next;

count++;

}

Node *s = new Node;

s->data = temp;

s->next = p->next;

p->next = s;} }(3)在带头结点单循环链表中删除第i个元素算法 输入:删除第i个结点,待存放删除结点值变量e 前置条件:单循环链表不空,i的值要合法

动作:在带头结点的单循环链表中删除第i个结点,并返回该结点的值(由e传出)。输出:无

后置条件:单循环链表中减少了一个结点

//在带头结点单循环链表中删除第i个元素算法 template T LinkList::Delete(int i){ Node *p = head;int count = 0;

if(i>length)cout<<“i不合法,越界!”<

while(count

p=p->next;

count++;

}

Node *s = p->next;

T x= s->data;

p->next = s->next;

return x;} }

(4)遍历单循环链表元素算法 输入:无

前置条件:单循环链表不空

动作:遍历输出单循环链表中的各元素。输出:无

后置条件:无

//遍历单循环链表元素算法 template void LinkList::print(){ Node *p = head->next;while(p!=head){

cout<

data<<“ ”;

p=p->next;} cout<

(5)上机实现以上基本操作,写出main()程序: void main(){ int a[10]={1,2,3,4,5,6,7,8,9,0};//测试带参数的构造函数(前端插入!)

LinkList list1(a,10);list1.print();cout<<“测试插入”<

3、采用链式存储方式,并利用单链表类及类中所定义的算法加以实现线性表La,Lb为非递减的有序线性表,将其归并为新线性表Lc,该线性表仍有序(未考虑相同时删除一重复值)的算法。模板函数:

template void LinkList::addtwo(LinkList La,LinkList Lb){ Node *p1=La.head->next;Node *p2=Lb.head->next;int num=0;while(p1&&p2){

if(p1->data>p2->data)

{

this->insert(++num,p1->data);

p1=p1->next;

}

else{ this->insert(++num,p2->data);

p2=p2->next;

} } if(!p1){

p1=p2;} while(p1){

this->insert(++num,p1->data);

p1=p1->next;}

} void main(){ int a[5]={1,2,5,6,9};int b[5]={0,3,4,7,8};LinkList list1(a,5);LinkList list2(b,5);list1.print();list2.print();LinkList list3;list3.addtwo(list1,list2);list3.print();system(“pause”);} 粘贴测试数据及运行结果:

选做题:

1、按一元多项式ADT的定义,实现相关操作算法: ADT PNode is Data 系数(coef)指数(exp)指针域(next):指向下一个结点 Operation 暂无

end ADT PNode ADT Polynomial is Data PNode类型的头指针。Operation

Polynomail 初始化值:无

动作:申请头结点,由头指针指向该头结点,并输入m项的系数和指数,建立一元多项式。

DestroyPolyn 输入:无

前置条件: 多项式已存在 动作:消毁多项式。输出:无

后置条件:头指针指向空

PolyDisplay 输入:无

前置条件: 多项式已存在,不为空 动作:输出多项式各项系数与指数 输出:无

后置条件:无 AddPoly 输入:另一个待加的多项式

前置条件:一元多项式pa和pb已存在。动作及后置条件:完成多项式相加运算,(采用pa=pa+pb形式,并销毁一元多项式pb)输出:无

end ADT Polynomial

2、实现一元多项式的减法,操作描述如下: SubPoly 输入:待减的多项式pb 前置条件:一元多项式pa和pb已存在。

动作及后置条件:完成多项式减法运算,即:pa=pa-pb,并销毁一元多项式pb。输出:无

3、参考P74-P79页双向链表的存储结构定义及算法,编程实现双向链表的插入算法和删除算法。

上一篇:行政服务中心目标管理考核办法下一篇:电缆供货合同