实验三队列实验报告.docx

实验三队列实验报告.docx
实验三队列实验报告.docx

计算机科学与技术系

实验报告

专业名称 计算机科学与技术 ______ 课程名称 数据结构与算法 _________ 项目名称

实验三队列实验 _________

班 级 ______________

学 号 _____________________ 姓 名 ____________________ 同组人员

无 __________________

实验日期 _______

合肥禽配

HEFEI UNIVERSITY

实验三队列实验

实验题目:建立含有若干个元素的循环队列和链队列,并分别实现循环队列和链队列的入队和出对操作。

(1)先实现循环队列的入队和出队操作

1?问题分析

本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队操作。

完成该实验需要以下4个子任务:

砂义一个循环队列的存储结构,定义队列的基本算法。

②定义一个display ()函数实现队列元素的输出看入队是否成功

④在主函数中完成操作

测试数据设计如下:

1 2 3 4 5

6

2. 概要设计

为了实现上述程序功能,需要:②声明一个循环队列②定义出队列的基本算法,

②通过键盘输入5个整数,入队,出队②在主函数中先往队列里输入5个元素,

然后入队,输出,看入队是否成功,然后出队,再调用display ()函

数看是否出队。

1)本程序包含7个函数:

1主函数main()

2. 置空队:InitQueue()

3. 判对空:QUeUeEmPtyo

4. 判队满:QUeUeFUll()

5. 入队:AddO

6. 出队:DeIeteO

7. display()

各函数关系如下:

Ini tQueue()

QueueEmptyO

QueueFuI1()

Add()Ma in

DeIete() display()

3、详细设计

实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。

(1)循环队列

#defi ne maxle n 10

typedef StrUCt{

int data [maxle n];

int front; in t rear;

}SeqQueue;

(2)队列基本算法

SeqQUeUe *ln itQueue(SeqQueue *q) // 建立一个空循环队列

{

q=(SeqQueue *)malloc(sizeof (SeqQueue));

q->fro nt=0;

q->rear=0;

return q;

}

int QueueFull (SeqQUeUe *q){ // 判断队列是否为满

if (q->fron t==(q->rear+1)%maxle n)

return 1;

else return 0;

}

int QueueEmpty(SeqQueue *q){

if (q->rear==q->front)

return 1;

else return 0;

}

void Add (SeqQueue *q,int x) //

{

if(!QueueFull(q)){

q->rear=(q->rear+1)%maxlen;

q->data[q->rear]=x;

}else printf ("queue full");

}

void Delete(SeqQueue *q){ //

if (!QueueEmpty(q))

q->front=(q->front+1)%maxlen;

else printf ("queue Empty");

}

(3)用display()函数输出循环队列元素

void display(SeqQueue *q)

{

int i;

if(q->front!=q->rear)

{

printf(" 输出循环队列元素:");

i=q->front;

do

{

i=(i+1)%maxlen;

printf("%d",q->data[i]); }while(i!

=q->rear);

}

else

printf(" 队列为空!");

}// 判断队列是否为空

入队

出队

//输出循环队列q的元素

//循环队列非空,输出队列元素

(4)在主函数中先往队列里输入 5 个元素,输出,看入队是否成功,然后出队,再调用display ()函数看是否出队。

int main()

{

SeqQueue *q;

int i,y;

q=ln itQueue(q);

Printf("请输入5个元素"); for(i=0;i<5;i++) {

SCan f("%d", &y); Add(q,y); } display(q); for(i=0;i<5;i++) {

DeIete(q); }

Printf("\n 请输入1个元素"); SCa nf("%d", &y); Add(q,y);

display(q); return 0;

}

4、调试分析

编译无错误 5、用户使用说明

程序名为class1.exe ,在DEBUGt 件夹里面。运行环境

ViSUaI C++ 6.0

6、测试结果

7、附录

#i nclude #in clude #defi ne maxle n 10

//建立空循环队列 //入队5个元素

//输出循环队列元素 //把5个元素出队

//再入队一个元素 //再输出循环队列元素

typedef struct{

int data [maxlen];

int front;

int rear;

}SeqQueue;

SeqQueue *InitQueue(SeqQueue *q) // 建立一个空循环队列{

q=(SeqQueue *)malloc(sizeof (SeqQueue));

q->front=0;

q->rear=0;

return q;

}

int QueueFull (SeqQueue *q){ // 判断队列是否为满

if (q->front==(q->rear+1)%maxlen)

return 1;

else return 0;

}

int QueueEmpty(SeqQueue *q){

if (q->rear==q->front)

return 1;

else return 0;

}

void Add (SeqQueue *q,int x)

{

if(!QueueFull(q)){ q->rear=(q->rear+1)%maxlen; q->data[q->rear]=x;

}else printf ("queue full");

}

void Delete(SeqQueue *q){

if (!QueueEmpty(q)) q->front=(q->front+1)%maxlen;

else printf ("queue Empty");

}

void display(SeqQueue *q)

{

int i;

if(q->front!=q->rear)

// 判断队列是否为空

// 入队

// 出队

// 输出循环队列q 的元素

// 循环队列非空,输出队列元素

printf(" 输出循环队列元素:");

i=q->front;

do

{

i=(i+1)%maxlen;

printf("%d",q->data[i]);

}while(i!=q->rear);

}

else

printf(" 队列为空!");

}

int main()

{

SeqQueue *q;

int i,y;

q=InitQueue(q);

printf(" 请输入5 个元素"); for(i=0;i<5;i++)

{

scanf("%d",&y);

Add(q,y);

}

display(q);

for(i=0;i<5;i++)

{

Delete(q);

}

printf("\n 请输入1 个元素"); scanf("%d",&y);

Add(q,y); display(q); return 0;

// 建立空循环队列

// 入队5 个元素

// 输出循环队列元素// 把5 个元素出队

// 再入队一个元素

// 再输出循环队列元素

}

(2)实现链队列的入队和出队操作

1. 问题分析

本程序要求实现建立含有若干个元素的链队列,并实现链队列入队和出队操作

完成该实验需要以下 4 个子任务:

(1定义一个链队列的存储结构,定义链 队列的基本算法。

②定义一个display ()函数实现队列元素的输出看入队是否成功

14 在主函数中完成操作

测试数据设计如下: 1 2 3 4 5 6

2. 概要设计

为了实现上述程序功能, 需要:11声明一个链队列 12定义出链队列的基本算法,

13

通过键盘输入 5 个整数,入队,出队 14

在主函数中先往队列里输入 5 个元

素,然后入队,输出,看入队是否成功,然后出队,再调用 display ()函 数看是否出队。

2) 本程序包含 6 个函数:

1主函数 main() 2. 置空队: InitQueue() 3. 判对空 : QueueEmpty() 4. 入队:Addo 5. 出队:DeIeteo 6.

display()

各函数关系如下:

SetQueue()

QueueEmptyO

Add()

DeIete()

display()

4、详细设计

实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。

(1)链队列

#defi ne maxle n 10

typedef StrUCt no de{

int data;

StrUCt node *n ext;

}Li nkList;

typedef StrUCt{

Lin kList *fron t,*rear;

}Lin kQueue;

Lin kQueue *q;

(2)队列基本算法

Lin kQueue *SetQueue() // 建立一个空链队列

{

q=(L in kQueue *)malloc(sizeof (Lin kQueue));

q->fron t=(L in kList *)malloc(sizeof(L in kList));

q->front->n ext=NULL;

q->rear=q->fro nt;

return q;

}

int QueueEmpty(LinkQueue

*q){ if (q->rear==q->front)

return 1;

else return 0;

}

// 判断队列是否为空

LinkQueue *Add (LinkQueue *q,int x)

{

LinkList *p;

p=(LinkList *)malloc(sizeof (LinkList)); p->data=x;p->next=NULL;

q->rear->next=p;

q->rear=p;

return q;

}

LinkQueue *Delete(LinkQueue *q){ LinkList *p;

if (!QueueEmpty(q)){ p=q->front->next;

q->front->next=p->next;

if(p->next=NULL)q->rear=q->front;

free(p);return q;

}

else printf ("queue Empty");

}

(3)用display()函数输出链队列元素void display(LinkQueue *q)

{

LinkList *p;

p=q->front->next;

if(p!=NULL)

{

printf(" 输出链队元素");

while(p!=NULL)

{ printf("%2d",p->data); p=p->next;

}

}

else printf("\n 链队为空"); // 入队

// 出队

// 输出链队列的元素

}

(4)在主函数中先往队列里输入 5个元素,输出,看入队是否成功, 再调用display ()函数看是否出队。 int main() {

int i,y=O; SetQueue();

display(q);

Printf("?n 请输入5个元素"); for(i=0;i<5;i++) {

SCan f("%d", &y); Add(q,y); }

display(q); for(i=0;i<5;i++) {

DeIete(q); }

display(q); return 0; }

4、 调试分析

编译无错误 5、 用户使用说明

程序名为class12exe ,在DEBUGt 件夹里面。运行环境 ViSUaI C++ 6.0

6、 测试结果

然后出队, //建立空链队列

//入队5个元素

//把5个元素出队

//看是否出队成功

7、附录

#include

#include

#define maxlen 10 typedef struct node{ int data; struct node *next;

}LinkList;

typedef struct{

LinkList *front,*rear;

}LinkQueue;

LinkQueue *q;

LinkQueue *SetQueue() // 建立一个空链队列

{ q=(LinkQueue *)malloc(sizeof (LinkQueue)); q->front=(LinkList *)malloc(sizeof(LinkList));

q->front->next=NULL;

q->rear=q->front; return q;

}

int QueueEmpty(LinkQueue *q){ // 判断队列是否为空if (q->rear==q->front)

return 1;

else return 0;

}

LinkQueue *Add (LinkQueue *q,int x) // 入队

{

LinkList *p; p=(LinkList *)malloc(sizeof (LinkList)); p->data=x;p->next=NULL;

q->rear->next=p;

q->rear=p; return q;

}

LinkQueue *Delete(LinkQueue *q){ // 出队

LinkList *p;

if (!QueueEmpty(q)){ p=q->front->next; q->front->next=p->next;

if(p->next=NULL)q->rear=q->front;

free(p);return q;

}}

else printf ("queue Empty");

}

void display(LinkQueue *q)

{

LinkList *p;

p=q->front->next;

if(p!=NULL)

{

printf(" 输出链队元素");

while(p!=NULL)

{

printf("%2d",p->data);

p=p->next;

}

}

else printf("\n 链队为空");

}

int main()

{

int i,y=0;

SetQueue();

display(q) ;

printf("\n 请输入5 个元素");

for(i=0;i<5;i++)

{

scanf("%d",&y);

Add(q,y);

}

display(q);

for(i=0;i<5;i++)

{

Delete(q);

}

display(q);

return 0; // 输出链队列的元素

// 建立链队列// 入队5 个元素

// 把5 个元素出队// 看是否出队成功

实验题目2:写出下列程序段的输出结果,并通过程序运行来验证1?问题分析完成该实验需要以下4个子任务:

(£定义一个循环队列的存储结构,定义队列的基本算法。

②定义一个Print ()函数实现程序

④在主函数中完成操作

测试数据设计如下:

2.概要设计

为了实现上述程序功能,需要:②声明一个循环队列②定义出队列的基本算法,

②在主函数调用print()函数看是否出队。

3)本程序包含8个函数:

1主函数main()

2. 置空队:InitQueue()

3. 判对空:QUeUeEmPtyo

4. 判队满:QUeUeFUll()

5. 入队:AddO

6. 出队:DeIeteO

7. display()

8. GetHeado

各函数关系如下:

GetHead()

Ini tQueue()

QueueEmptyO

QueueFuI1()

Add()Ma in

DeIete()

Print()

5、详细设计

实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。

(1)循环队列

#defi ne maxle n 10

typedef StrUCt{

Char data [maxle n];

int front; in t rear;

}SeqQueue;

(2)队列基本算法

SeqQUeUe *lni tQueue(SeqQueue *q) // 建立一个空循环队列

{

q=(SeqQueue *)malloc(sizeof (SeqQueue));

q->fro nt=0;

q->rear=0;

return q;

}

int QueueFull (SeqQUeUe *q){ // 判断队列是否为满

if (q->fron t==(q->rear+1)%maxle n)

return 1;

else return 0;

}

int QUeUeEmPty(SeqQUeUe *q){ // 判断队列是否为空

if (q->rear==q->front)

return 1;

else return 0; }

char GetHead(SeqQueue *q){ //

if(!QueueEmpty(q))

return q->data[(q->front+1)%maxlen]; else printf("queue Empty");

}

void Add (SeqQueue *q,char x) //

{

if(!QueueFull(q)){ q->rear=(q->rear+1)%m axlen; q->data[q->rear]=x;

}else printf ("queue full");

}

void Delete(SeqQueue *q){ //

if (!QueueEmpty(q))

q->front=(q->front+1)%maxlen;

else printf ("queue Empty");

}

(3 )用print() 函数验证程序

void print(SeqQueue *q)

{

char x,y,t;

x='e';y='c';

Add(q,'h');

Add(q,'r');

Add(q,y);

x=GetHead(q);

Delete(q);

Add(q,x);

x=GetHead(q);

Delete(q);

Add(q,'a');

while

(QueueEmpty(q)==0){ y=GetHead(q);

Delete(q); printf("%c",y);

}

printf("%c",x); 取栈顶元素

入队

出队

}

(4)在主函数中调用Print ()函数验证程序

int main()

{

SeqQueue *q; q=ln itQueue(q); Prin t(q);

return 0;

}

4、调试分析

编译无错误

5、用户使用说明

程序名为CIaSS2.exe ,在DEBUGt件夹里面。运行环境ViSUaI C++ 6.0 。

6、测试结果

I ■ I LZ ? VL ?∣J V^-3i2L ??-∣U £_ XLZJ kJ U 弓??u IlJI J 4£_ ? JKJ

7、附录

#include VStdiO.h>

#include VStdIib.h>

#define maxlen 10 typedef StrUCt{

Char data [maxlen];

int front;

int rear;

}SeqQueue;

SeqQUeUe *lnitQueue(SeqQueue *q)//建立一个空循环队列

q=(SeqQueue *)malloc(sizeof (SeqQueue));

q->front=0;

q->rear=0;

return q;

}

int QueueFull (SeqQueue *q){

if (q->front==(q->rear+1)%maxlen)

return 1;

else return 0;

}

// 判断队列是否为满

int QueueEmpty(SeqQueue

*q){ if (q->rear==q->front) return 1;

else return 0;

}

char GetHead(SeqQueue *q){ if(!QueueEmpty(q))// 判断队列是否为空// 取栈顶元素

return q->data[(q->front+1)%maxlen];

else printf("queue Empty");

}

void Add (SeqQueue *q,char x) // 入队{

if(!QueueFull(q)){ q->rear=(q->rear+1)%maxlen;

q->data[q->rear]=x;

}else printf ("queue full");

}

void Delete(SeqQueue *q){ // 出队if

(!QueueEmpty(q)) q->front=(q->front+1)%maxlen;

else printf ("queue Empty");

}

void print(SeqQueue *q)

{

char x,y,t;

x='e';y='c';

Add(q,'h');

Add(q,'r');

Add(q,y);

x=GetHead(q);

Delete(q);

Add(q,x);

x=GetHead(q);

Delete(q);

Add(q,'a');

while (QueueEmpty(q)==0){ y=GetHead(q); Delete(q); printf("%c",y);

}

printf("%c",x);

}

int main()

{

SeqQueue *q; q=InitQueue(q); print(q); return 0;

}

数据结构_实验三_栈和队列及其应用

实验编号:3四川师大《数据结构》实验报告2016年10月29日 实验三栈和队列及其应用_ 一.实验目的及要求 (1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们; (2)本实验训练的要点是“栈”的观点及其典型用法; (3)掌握问题求解的状态表示及其递归算法,以及由递归程序到非递归程序的转化方法。 二.实验内容 (1)编程实现栈在两种存储结构中的基本操作(栈的初始化、判栈空、入栈、出栈等); (2)应用栈的基本操作,实现数制转换(任意进制); (3)编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列); (4)利用栈实现任一个表达式中的语法检查(括号的匹配)。 (5)利用栈实现表达式的求值。 注:(1)~(3)必做,(4)~(5)选做。 三.主要仪器设备及软件 (1)PC机 (2)Dev C++ ,Visual C++, VS2010等 四.实验主要流程、基本操作或核心代码、算法片段(该部分如不够填写,请另加附页)(1)编程实现栈在两种存储结构中的基本操作(栈的初始化、判栈空、入栈、出栈等); A.顺序储存: 代码部分: 栈" << endl; cout << " 2.出栈" << endl; cout << " 3.判栈空" << endl; cout << " 4.返回栈顶部数据" << endl; cout << " 5.栈长" << endl; cout << " 0.退出系统" << endl;

cout << "你的选择是:" ; } 链式储存: 代码部分: 栈"<>select; switch (select){ case 0:break; case 1: cout<<"push data:"; cin>>e; if(push(L,e)){

基于MATLAB的循环码实验报告

课程名称:信息论与编码 课程设计题目:循环码的编码和译码程序设计指导教师: 系别:专业: 学号:姓名: 合作者 完成时间: 成绩:评阅人:

一、实验目的: 1、通过实验了解循环码的工作原理。 2、深刻理解RS 码构造、RS 编译码等相关概念和算法。 二、实验原理 1、RS 循环码编译码原理与特点 设C 使某 线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021 ,它的循环 移位),,,(1032)1(---=n n n c c c c C 也属于C ,则称该 码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。 如果一个 线性码具有以下的属性,则称为循环码:如果n 元组 },,,{110-=n c c c c 是子空间S 的一个码字,则经过循环移位得到的},,,{201)1(--=n n c c c c 也 同样是S 中的一个码字;或者,一般来说,经过j 次循环移位后得到的 },,,,,,,{11011)(---+--=j n n j n j n j c c c c c c c 也是S 中的一个码字。 RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。 码长:12-=m n 信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d 最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1 循环码特点有: 1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。 2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变换过程中,在速度上会有快有慢,中间经过其他一些数码形式,即为瞬时错误)。 3)码字的循环特性,循环码中任一许用码经过牡环移位后,所得到的码组仍然是许用码组。

数据结构-堆栈和队列实验报告

实验二堆栈和队列 实验目的: 1.熟悉栈这种特殊线性结构的特性; 2.熟练并掌握栈在顺序存储结构和链表存储结构下的基本运算; 3.熟悉队列这种特殊线性结构的特性; 3.熟练掌握队列在链表存储结构下的基本运算。 实验原理: 堆栈顺序存储结构下的基本算法; 堆栈链式存储结构下的基本算法; 队列顺序存储结构下的基本算法;队列链式存储结构下的基本算法;实验内容: 3-18链式堆栈设计。要求 (1)用链式堆栈设计实现堆栈,堆栈的操作集合要求包括:初始化Stacklnitiate (S), 非空否StackNotEmpty(S),入栈StackiPush(S,x), 出栈StackPop (S,d),取栈顶数据元素StackTop(S,d); (2)设计一个主函数对链式堆栈进行测试。测试方法为:依次把数据元素1,2,3, 4,5 入栈,然后出栈并在屏幕上显示出栈的数据元素; (3)定义数据元素的数据类型为如下形式的结构体, Typedef struct { char taskName[10]; int taskNo; }DataType; 首先设计一个包含5个数据元素的测试数据,然后设计一个主函数对链式堆栈进行测试,测试方法为:依次吧5个数据元素入栈,然后出栈并在屏幕上显示出栈的数据元素。 3-19对顺序循环队列,常规的设计方法是使用対尾指针和对头指针,对尾指针用于指示当 前的対尾位置下标,对头指针用于指示当前的対头位置下标。现要求: (1)设计一个使用对头指针和计数器的顺序循环队列抽象数据类型,其中操作包括:初始化,入队列,出队列,取对头元素和判断队列是否为空; (2)编写一个主函数进行测试。 实验结果: 3-18 typedef struct snode { DataType data; struct snode *n ext; } LSNode; /* 初始化操作:*/

数据库系统实验报告 实验三 数据控制(安全性)..

《数据库系统概论》实验报告 题目:实验三数据控制(安全性) 班级姓名学号日期2014年6月6日 一、实验目的 1.通过SQL对数据库进行安全性控制 2.完成教材中例题的上机练习 二、实验平台 微软SQL Server 2000或以上版本。 对于SQL Server 2000,使用查询分析器运行SQL语句,对于SQL Server 2005以上的版本,使用SQL Server Management Studio运行SQL语句。 三、实验内容和要求 使用SQL对数据进行安全性控制,包括授权和权力回收。 操作完成后,查看授权用户是否真正具有所授予的数据操作权利,在权力回收操作之后,用户是否确实丧失了所回收的数据操作权力。 在前几次实验中已经建立了实验数据库,继续在此数据库上进行实验所要求的各项操作。认真填写实验报告,记录所有的实验用例。 四、实验步骤 1.以管理员sa登录数据库,新建DB数据库,然后运行如下SQL语句,创建 我们前几次实验所建立的表。 CREATE TABLE course ( Cno char(4) NOT NULL, Cname char(40) DEFAULT NULL, Cpno char(4) DEFAULT NULL, Ccredit smallint DEFAULT NULL, PRIMARY KEY (Cno) ) ; -- -- 转存表中的数据'course' -- INSERT INTO course (Cno, Cname, Cpno, Ccredit) V ALUES ('1', '数据库', '5', 4); INSERT INTO course (Cno, Cname, Cpno, Ccredit) V ALUES ('2', '数学', NULL, 2);

队列实验报告

一.实验项目名称 循环队列和链式队列的创建 二、实验目的 1、掌握队列的特点 (先进先出 FIFO) 及基本操作 ,如入队、出队等, 2、队列顺序存储结构、链式存储结构和循环队列的实现,以便在 实际问题背景下灵活应用。 三、实验内容 1.链式队列的实现和运算 2.循环队列的实现和运算 四、主要仪器设备及耗材 VC++6.0 运行环境实现其操作 五.程序算法 (1)循环队列操作的算法 1>进队列 Void enqueue (seqqueue &q, elemtype x) { if ((q.rear+1)%maxsize = = q.front) cout<< ” overflow”; else { q.rear=(q.rear+1)%maxsize; // 编号加 1 或循环回第一个单元 q.queue[q.rear]=x; } } 2>出队列 Void dlqueue(seqqueue &q ) { if (q.rear= =q.front)cout<< ” underflow”; else q.front =(q.front+1)%maxsize; } 3>取对头元素

elemtype gethead(seqqueue q ) { if(q.rear= =q.front) { cout<<” underflow;” return NULL;} else return q.queue[(q.front+1)%maxsize]; //front 指向队头前一个位置 } 4>判队列空否 int empty(seqqueue q ) { if (q.rear= =q.front) else return 0; reurn 1; } (2).链队列操作的算法 1>.链队列上的初始化 void INIQUEUE( linkqueue&s) {link *p; p=new link; p->next=NULL;//p 是结构体指针类型,用 s.front=p;//s 是结构体变量,用. s.rear=p;//头尾指针都指向头结点 -> } 2>.入队列 void push(linkqueue &s, elemtype x) { link*p;//p 是结构体指针类型,用-> p=new link; p->data=x; p->next=s.rear->next;//s 是结构体变量,用s.rear->next=p; s.rear=p;//插入最后 . } 3>判队空 int empty( linkqueue s ) {if (s.front= =s.rear) return 1; else return 0; } 4>.取队头元素 elemtype gethead( linkqueue s ) { if (s.front= =s.rear) else retuen return NULL; s.front->next->data; }

SQL 数据库实验报告3

一、实验内容 (1)掌握在SQL Server管理平台中对表进行插入、修改和删除数据操作的方法。 (2)掌握使用Transact-SQL语句对表进行插入、修改和删除数据操作的方法。 二、实验器材(设备、元器件) Window7操作系统,SQL Server软件 三、实验步骤 (1)启动SQL Server管理平台,在对象资源管理器中展开studentsdb数据库文件夹。 (2)在studentsdb数据库中包含有数据表student_info、curriculum、grade,这些表的数据结构如图所示在studentsdb数据库中包含有数据表student_info、curriculum、grade,这些表的数据结构如图所示 (3)在SQL Server管理平台中创建student_info、curriculum表。 学生基本情况表student_info 课程信息表curriculum

①启动SQL Server管理平台,在对象资源管理器中展开studentsdb数据库文件夹。 ②在SQL Server管理平台中创建student_info表。 ③在SQL Server管理平台中创建curriculum表。 (4)使用Transact-SQL语句CREATE TABLE在studentsdb数据库中创建表 学生成绩表grade

①新建查询,输入Transact-SQL语句,点击执行 ②出现如下界面,学生成绩表grade建立成功 (5)在SQL Server管理平台中,将student_info表的学号列设置为主键,非空。

(6)student_info、curriculum、grade表中的数据如图所示。 student_info的数据 curriculum的数据 grade的数据 (7)在SQL Server管理平台中为student_info表添加数据

数据结构-队列实验报告

《数据结构》课程实验报告 一、实验目的和要求 (1)熟悉C语言的上机环境,进一步掌握C语言的结构特点。 (2)掌握队列的顺序表示和实现。 二、实验环境 Windows7 ,VC 三、实验内容及实施 实验三:队列 【实验要求】 构建一个循环队列, 实现下列操作 1、初始化队列(清空); 2、入队; 3、出队; 4、求队列长度; 5、判断队列是否为空; 【源程序】 #include #define MAXSIZE 100 #define OK 1; #define ERROR 0; typedef struct { int *base; int front; int rear; }SqQueue;//队列的存储结构 int InitQueue(SqQueue &Q) {

Q.base=new int[MAXSIZE]; Q.front=Q.rear=0; return OK; }//队列的初始化 int EnQueue(SqQueue &Q,int e) { if((Q.rear+1)%MAXSIZE==Q.front) return ERROR; Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXSIZE; return OK; }//队列的入队 int DeQueue(SqQueue &Q,int &e) { if(Q.front==Q.rear) return ERROR; e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXSIZE; return OK; }//队列的出队 int QueueLength(SqQueue &Q) { int i; i=(Q.rear-Q.front+MAXSIZE)%MAXSIZE; return i; }//求队列长度 void JuQueue(SqQueue &Q) { if(Q.rear==Q.front) printf("队列为空"); else printf("队列不为空"); }//判断队列是否为空 void QueueTraverse(SqQueue &Q)

栈的操作(实验报告)

实验三栈和队列 3.1实验目的: (1)熟悉栈的特点(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的顺序存储结构和链式存储结构上的实现; (2)熟悉队列的特点(先进先出)及队列的基本操作,如入队、出队等,掌握队列的基本操作在队列的顺序存储结构和链式存储结构上的实现。 3.2实验要求: (1)复习课本中有关栈和队列的知识; (2)用C语言完成算法和程序设计并上机调试通过; (3)撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运行结果(必要时给出多种可能的输入数据和运行结果)。 3.3基础实验 [实验1] 栈的顺序表示和实现 实验内容与要求: 编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序栈 (2)插入元素 (3)删除栈顶元素 (4)取栈顶元素 (5)遍历顺序栈 (6)置空顺序栈 分析: 栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。 对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top= =MAXNUM-1,栈满时,不能入栈; 否则出现空间溢出,引起错误,这种现象称为上溢。 出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则产生错误。通常栈空作为一种控制转移的条件。 注意: (1)顺序栈中元素用向量存放 (2)栈底位置是固定不变的,可设置在向量两端的任意一个端点 (3)栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(通常称top为栈顶指针)来指示当前栈顶位置 参考程序: #include #include #define MAXNUM 20

数据库原理实验报告(3)实验三数据表的创建与管理实验

数据库原理实验报告(3)实验三数据表的创建与 管理实验 南京晓庄学院 《数据库原理与应用》 课程实验报告 实验三数据表的创建与管理实验 所在院(系): 数学与信息技术学院班级: 学号: 姓名: 1.实验目的 (1) 理解SQL Server 20xx常用数据类型和表结构的设计方法。理解主键、外键含义,掌握 建立各表相关属性间参照关系的方法。 (2) 熟练掌握使用SQL Server Management Studio图形工具创建表,删除表,修改表结构,插入及更新数据的方法。 (3) 熟练掌握使用Transact-SQL语句创建表,删除表,修改表结构,插入及更新数据的方 法。 2.实验要求 基本实验:

(1) 在实验二所创建的“TM”数据库中合理设计以下各表逻辑结构: 学生信息(学号,姓名,性别,籍贯,出生日期,民族,学院/系别号,班级号) 课程信息(课程号,课程名称,课程所属模块,课程类别,学分,学时) 学习信息(学号,课程号,考试成绩,平时成绩) 院系信息(院系号,院系名称) 要求确定各个字段的名称、类型、是否有默认值,是否主键等信息。 (2) 依据你所设计的表结构,使用SQL Server Management Studio图形工具在“TM”数据 库中创建学生信息表和课程信息表,并试验在图形界面中修改表结构,删除数据表,输入并更新数据的方法。 (3) 依据你所设计表结构,使用Transact-SQL语句创建学习信息表和院系信息表,并试验 使用T-SQL语句修改表结构,删除数据表,插入和更新数据的方法。 (4) 找出已创建各表之间相关属性的参照关系,并在相关表中增加引用完整性约束。 (5) 按要求完成实验报告。 扩展实验: (1) 在“TM”数据库中补充设计以下各表结构:

队列的表示及实现实验报告

陕西科技大学实验报告 班级信工082 学号200806030202 姓名李霄实验组别 实验日期2010-12-20 室温报告日期2010-12-20 成绩 报告内容:(目的和要求,原理,步骤,数据,计算,小结等) 实验名称:实验三队列的表示及实现 实验目的: 1、通过实验进一步理解队列的“先进先出”特性。 2、掌握队列的逻辑结构及顺序存储结构和链式存储结构。 3、熟练运用C语言实现队列的基本操作。 4、灵活运用队列解决实际问题。 实验内容: 1、实现链队列,并编写主函数进行测试。测试方法为:依次10、20、 30、40,然后,出对3个元素。再次入队50、60,然后出队3个元 素。查看屏幕上显示的结果是否与你分析的结果一致。 2、在1的基础上,再出队1个元素。查看屏幕上显示的结果是否与你 分析的结果一致。 3、编写主函数比较取队头元素操作和出队操作。 实验学时:2学时 实验程序 #include "stdio.h" #include "conio.h" typedef int DataType; typedef struct { DataType data; struct QNode* next; }LQNode,*PQNode; typedef struct { PQNode front,rear; }LinkQueue; int InitQueue(LinkQueue *Q) { Q->front=Q->rear=(PQNode)malloc(sizeof(LQNode));

if (!Q->front){printf("errors\n");return 0;} Q->front->next=NULL; return 1; } int QueueEmpty(LinkQueue Q) { if(Q.front==Q.rear) return 1; else return 0; } int EnQueue(LinkQueue *Q,DataType e) { PQNode p; p=(PQNode)malloc(sizeof(LQNode)); if(!p) { printf("\n\nerrors\n\n"); return 0; } p->data=e; p->next=NULL; Q->rear->next=p; Q->rear=p; return 1; } int DeQueue(LinkQueue *Q,DataType *e) { PQNode p; if( Q->front==Q->rear) { printf("\nerrors\n");

数据库实验报告1

1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。(5分) exec sp_rename v_spj, v_spj_三建; 2.针对SPJ数据库,创建并执行如下的存储过程:(共计35分) (1)创建一个带参数的存储过程—jsearch。该存储过程的作用是:当任意输入一个工 程代号时,将返回供应该工程零件的供应商的名称(SNAME)和零件的名称(PNAME) 以及工程的名称(JNAME)。执行jsearch存储过程,查询“J1”对应的信息。(10 分) create proc jsearch @jno char(2) as select sname, pname, jname from s,p,j,spj where s.sno=spj.sno and p.pno=spj.pno and j.jno=spj.jno and spj.jno=@jno; 执行: exec jsearch 'J1'

(2)使用S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作用是:当执 行该存储过程时,将返回北京供应商的所有信息。(10分) 创建加密存储过程: create proc jmsearch with encryption as select * from s where s.city='北京'; sp_helptext jmsearch; (3)使用系统存储过程sp_helptext查看jsearch, jmsearch的文本信息。(5分) 用系统存储过程sp_helptext查看jsearch: exec sp_help jsearch; exec sp_helptext jsearch;

数据库道理实验报告3

实验三数据表的创建与管理实验 所在院(系):数学与信息技术学院 班级: 学号: 姓名:

1.实验目的 (1)理解SQL Server 2005常用数据类型和表结构的设计方法。理解主键、外键含义,掌握 建立各表相关属性间参照关系的方法。 (2)熟练掌握使用SQL Server Management Studio图形工具创建表,删除表,修改表结构, 插入及更新数据的方法。 (3)熟练掌握使用Transact-SQL语句创建表,删除表,修改表结构,插入及更新数据的方 法。 2.实验要求 基本实验: (1)在实验二所创建的“TM”数据库中合理设计以下各表逻辑结构: 学生信息(学号,姓名,性别,籍贯,出生日期,民族,学院/系别号,班级号) 课程信息(课程号,课程名称,课程所属模块,课程类别,学分,学时) 学习信息(学号,课程号,考试成绩,平时成绩) 院系信息(院系号,院系名称) 要求确定各个字段的名称、类型、是否有默认值,是否主键等信息。 (2)依据你所设计的表结构,使用SQL Server Management Studio图形工具在“TM”数据 库中创建学生信息表和课程信息表,并试验在图形界面中修改表结构,删除数据表,输入并更新数据的方法。 (3)依据你所设计表结构,使用Transact-SQL语句创建学习信息表和院系信息表,并试验 使用T-SQL语句修改表结构,删除数据表,插入和更新数据的方法。 (4)找出已创建各表之间相关属性的参照关系,并在相关表中增加引用完整性约束。 (5)按要求完成实验报告。 扩展实验: (1)在“TM”数据库中补充设计以下各表结构: 教师信息(教师号,姓名,性别,出生日期,学历,学位,入职时间,职称,院系号) 授课信息(教师号,课程号,学期) 班级信息(班级号,班级名称,专业号) 专业信息(专业号,专业名称,学制,学位) 图书信息(图书号,书名,作者,出版社,出版日期,册数,价格,分类) 借书偏息(学号,图书号,借出时间,归还时间) 奖励信息(学号,奖励类型,奖励金额) (2)设计并实现各表之间相关属性的参照关系。 (3)使用SQL Management Studio图形界面或Transact-SQL在“TM”数据库中创建前述各 表,并插入部分数据,要求所插入数据合理有效。 3.实验步骤、结果和总结实验步骤/结果

实验三实验报告

实验三实验报告 1、简易计算器 (1)问题描述 由键盘输入一算术表达式,以中缀形式输入,试编写程序将中缀表达式转换成一棵二叉表达式树,通过对该的后序遍历求出计算表达式的值。 (2)基本要求 a.要求对输入的表达式能判断出是否合法。不合法要有错误提示信息。 b.将中缀表达式转换成二叉表达式树。 c.后序遍历求出表达式的值 (3)数据结构与算法分析 一棵表达式树,它的树叶是操作数,如常量或变量名字,而其他的结点为操作符。 a.建立表达式树。二叉树的存储可以用顺序存储也可用链式存储。当要创建二叉树时,先从表达式尾部向前搜索,找到第一个优先级最低的运算符,建立以这个运算符为数据元素的根结点。注意到表达式中此运算符的左边部分对应的二叉绔为根结点的左子树,右边部分对应的是二叉绔为根结点的右子树,根据地这一点,可用递归调用自己来完成对左右子树的构造。 b.求表达式的值。求值时同样可以采用递归的思想,对表达式进行后序遍历。先递归调用自己计算左子树所代表的表达式的值,再递归调用自己计算右子树代表的表达式的值,最后读取根结点中的运算符,以刚才得到的左右子树的结果作为操作数加以计算,得到最终结果。 (4)需求分析 程序运行后显示提示信息,输入任意四则运算表达式,倘若所输入的表达式不合法程序将报错。 输入四则运算表达式完毕,程序将输出运算结果。 测试用的表达式须是由+、-、*、/运算符,括号“(”、“)”与相应的运算数组成。运算数可以是无符号浮点型或整型,范围在0~65535。 (5)概要设计 二叉树的抽象数据类型定义 ADT BinaryTree{ 数据对象:表达式运算数{ num | 0< num < 65535 } 表达式运算符{ opr | + , - , * , / } 数据关系:由一个根结点和两棵互不相交的左右子树构成,且树中结点具有层次关系。根结点必须为运算符,叶子结点必须为运算数。 基本操作: InitBiTree(&T , &S) 初始条件:存在一四则运算前缀表达式S。 操作结果:根据前缀表达式S构造相应的二叉树T。 DestroyBiTree(&T) 初始条件:二叉树T已经存在。 操作结果:销毁T。 Value(&T) 初始条件:二叉树T已经存在。 操作结果:计算出T所表示的四则运算表达式的值并返回。

栈和队列综合实验报告

栈和队列综合实验报告 一、实验目的 (1)能够利用栈和队列的基本运算进行相关操作。 (2)进一步熟悉文件的应用 (3)加深队列和栈的数据结构理解,逐步培养解决实际问题的编程能力。 二、实验环境 装有Visual C++的计算机。 本次实验共计4学时。 三、实验内容 以下两个实验任选一个。 1、迷宫求解 设计一个迷宫求解程序,要求如下: 以M × N表示长方阵表示迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 能任意设定的迷宫 (选作)如果有通路,列出所有通路 提示: 以一个二维数组来表示迷宫,0和1分别表示迷宫中的通路和障碍,如下图迷宫数据为:11

01 01 01 01 01 01 01 11 入口位置:1 1 出口位置:8 8 四、重要数据结构 typedef struct{ int j[100]; int top;栈顶指针,一直指向栈顶 }stack;//存放路径的栈 int s[4][2]={{0,0},{0,0},{0,0},{0,0}}; //用于存放最近的四步路径坐标的数组,是即使改变的,即走一步,便将之前的坐标向前移一步,将最早的一步坐标覆盖掉,新的一步放入数组末尾其实功能和队列一样。 其作用是用来判断是否产生了由于本程序算法产生的“田”字方格内的死循环而准备的,用于帮助跳出循环。 五、实现思路分析 if(a[m][n+1]==0&&k!=3){ n++; k=1; o=0; }else if(a[m+1][n]==0&&k!=4){ m++;

k=2; o=0; }else if(a[m][n-1]==0&&k!=1){ n--; k=3; o=0; }else if(a[m-1][n]==0&&k!=2){ m--; k=4; o=0; }else{ o++;} if(o>=2){ k=0; }//向所在方格的四个方向探路,探路顺序为→↓←↑(顺时针),其中if判断条件内的&&k!=n和每个语句块中的对k赋值是为防止其走回头路进入死循环,而最后一个else{}内语句是为了防止进入死路时,不能走回头路而造成的死循环。 push(q,m,n);//没进行一次循环都会讲前进的路径入栈。 if (pushf(&s[0][0],m,n)==0){ k=3;}//用来判断是否产生了由于本程序探路算法产生的“田”字方格内的死循环而准备的,用于帮助跳出田字循环。同时会将路径存入用于下次判断 六、程序调试问题分析 最开始写完时是没有死路回头机制的,然后添加了两步内寻路不回头机制。 第二个是“田”字循环问题,解决方法是加入了一个记录最近四步用的数组和一个判断田字循环的函数pushf。

实验三队列实验报告

计算机科学与技术系 实验报告 专业名称计算机科学与技术 课程名称数据结构与算法 项目名称实验三队列实验 班级 学号 1 姓名 同组人员无 实验日期

实验三队列实验 实验题目:建立含有若干个元素的循环队列和链队列,并分别实现循环队列和 链队列的入队和出对操作。 (1)先实现循环队列的入队和出队操作 1.问题分析 本程序要求实现建立含有若干个元素的循环队列,并实现循环队列的入队和出队操作。 完成该实验需要以下4个子任务: ○1定义一个循环队列的存储结构,定义队列的基本算法。 ○2定义一个display()函数实现队列元素的输出看入队是否成功 ○3通过队列的基本算法实现队列的出队操作 ○4在主函数中完成操作 测试数据设计如下: 1 2 3 4 5 6 2.概要设计 为了实现上述程序功能,需要:○1声明一个循环队列○2定义出队列的基本算法,○3通过键盘输入5个整数,入队,出队○4在主函数中先往队列里输入5个元 素,然后入队,输出,看入队是否成功,然后出队,再调用display()函数看是否出队。 1)本程序包含7个函数: 1主函数main() 2.置空队:InitQueue() 3.判对空: QueueEmpty() 4.判队满:QueueFull() 5.入队:Add() 6.出队:Delete() 7.display()

各函数关系如下: InitQueue() QueueEmpty() Main () QueueFull() Add()Main Delete() display() 3、详细设计 实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。 (1)循环队列 #define maxlen 10 typedef struct{ int data [maxlen]; int front; int rear; }SeqQueue; (2)队列基本算法 SeqQueue *InitQueue(SeqQueue *q) //建立一个空循环队列{ q=(SeqQueue *)malloc(sizeof (SeqQueue)); q->front=0; q->rear=0; return q; } int QueueFull (SeqQueue *q){ //判断队列是否为满 if (q->front==(q->rear+1)%maxlen) return 1; else return 0; }

数据库原理实验报告-实验三-数据完整性与安全性控制

《数据库原理》实验报告 题目:实验三 数据完整性与安全性控制学号班级日期 2016.10.18 一、实验容、步骤以及结果 1.利用图形用户界面对实验一中所创建的Student库的S表中,增加以下的约束和索引。 (18分,每小题3分) (1)非空约束:为出生日期添加非空约束。 非空约束:取消表S中sbirth的勾。可能需要重建表。 (2)主键约束:将学号(sno)设置为主键,主键名为pk_sno。 设主键:单击数据库Student-->单击表-->单击S-->右击sno-->选择‘修改’命令 -->对话框中右击sno-->选择‘设置主键’-->修改主键名为‘pk_sno’-->保存 (3)唯一约束:为(sname)添加唯一约束(唯一键),约束名为uk_sname。 唯一约束:单击数据库Student-->单击表-->单击S-->右击sname-->选择‘修改’ 命令→右击sname-->选择‘索引和键’命令-->打开‘索引和键’框图-->添加--> 是否唯一改为‘是’-->名称改为‘us_sname’-->关闭。

(4)缺省约束:为性别(ssex)添加默认值,其值为“男”。 设默认约束:单击数据库Student→单击表→单击S→右击sno→选择‘修改’命令→单击cno-->在默认值栏输入‘男’→保存

(5)CHECK约束:为SC表的成绩(grade)添加CHECK约束,约束名为ck_grade,其 检查条件为:成绩应该在0-100之间。

(6)外键约束:为SC表添加外键约束,将sno,cno设置为外键,其引用表分别是S表 和C表,外键名称分别为fk_sno,fk_cno。 2.在图形用户界面中删除以上小题中已经创建的各种约束,用SQL语言分别重新创建第1题中的(2)-(6)小题.(15分,每小题3分,提示:alter table add constraint) 删除约束:单击数据库Student-->表-->单击S-->展开键、约束。一一删除即可。

循环码

实验、循环码编译码系统 一、 实验目的: 1、熟悉循环码的编译码原理; 2、掌握Quartus Ⅱ开发软件的运用,在该软件下熟练的运用多种输入方式完成各种电路设计的要求; 3、初步掌握VHDL 语言,能够运用该语言编写简单的程序,完成设计要求; 4、熟悉对PLD 的下载和仿真,学会观察测试结果的正确性; 5、学会运用各方面知识,设计并实现一个系统。 二、 实验要求: 使用Quartus Ⅱ软件,用m 序列发生器作为信号源设计循环码编译码,速率可自定,并在实验箱上调试出编码和译码波形,比较信号源和译码后的信号波形。 三、实验设备: Quartus II 软件、Modelsim 软件、FPGA 实验箱、微机1台、示波器1台 四、实验原理: 1、 循环码的编码 循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若(1n a - 2n a -…… 1a 0a )为一循环码组,则(2n a - 3n a -……0a 1n a -)、(3n a - 4n a -……1n a - 2n a -)、……还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。表1-2给出了一种(7,3)循环码的全部码字。 可以将循环码码组用代数多项是来表示,这个多项式被称为码多项式,对于表1-2中的任一码组可以表示为: 654326543210()A x a x a x a x a x a x a x a =++++++ (1-4) 表1-2一种(7,3)循环码的全部码字

在码多项式运算中采用按模运算法则。若一任意多项式F (x )被一个n 次多项式N (x )除,得到商式Q (x )和一个次数小于n 的余式R (x ),也就是: ()() ()()() F x R x Q x N x N x =+ (1-5) 则可以写为:F (x )≡R (x )(模N (x ))。 这时,码多项式系数仍按模2运算,即只取值0和1,假设:计算x 4+x 2+1除以x 3+1的值可得: 42233 11 11 x x x x x x x ++++=+++ (1-6) 循环码的生成多项式和生成矩阵:(全0码字除外)称为生成多项式,用g (x )表示。 可以证明生成多项式g (x )具有以下特性: (1)g (x )是一个常数项为1的r=n-k 次多项式; (2)g (x )是1n x +的一个因式; (3)该循环码中其它码多项式都是g (x )的倍式。 一旦生成多项式g (x )确定以后,该循环码的生成矩阵就可以确定,进而该循环码的所有码字就可以确定。 以表1-2的(7,3)循环码为例,来构造它的生成矩阵和生成多项式,这个循环码主要参数为,n =7,k =3,r =4。从表中可以看到,其生成多项式可以用第1码字构造: 421()()1g x A x x x x ==+++ (1-7) 2643253242()()()()1x g x x x x x G x xg x x x x x g x x x x ???? +++???? ==+++????????+++???? (1-8) 一个较简单的系统循环码编码方法:设要产生(n ,,k )循环码,m (x )表示信息多项式,则其次数必小于k ,而()n k x m x -?的次数必小于n ,用()n k x m x -?除以g (x ), 可得余数r (x ),r (x )的次数必小于(n-k ),将r (x )加到信息位后作监督位,就得到了系统 循环码。下面就将以上各步处理加以解释。 (1)用n k x -这一运算实际上是把信息码后附加上(n-k )个“0”。例如,信息码为110, 它相当于2 ()m x x x =+。当n-k =7-3=4时,65()n k x m x x x -?=+,它相当于1100000。而希望的到得系统循环码多项式应当是()()()n k A x x m x r x -=?+。 (2)求r (x )。由于循环码多项式A (x )都可以被g (x )整除,也就是:

栈和队列及其应用实验报告

数据结构实验报告 实验名称:栈和队列及其应用 班级:12级电气本2 学号:2012081227 姓名:赵雪磊 指导教师:梁海丽 日期:2013年9月23日 数学与信息技术学院 一、实验目的

1. 掌握栈和队列的概念。 2.掌握栈和队列的基本操作(插入、删除、取栈顶元素、出队、入队等)。 3.理解栈和队列的顺序、链式存储。 二、实验要求 利用顺序栈将任意一个给定的十进制数转换成二进制、八进制、十六进制数并输出。 三、算法描述 #include "stdafx.h" #include "iomanip.h" void D10to2_8_16(int i,char radix) { char m; if(i>=radix) D10to2_8_16(i/radix,radix); if((m=i%radix+'0')>0x39) m+=7; cout << m; } void main(void) { int nDec; cout << "请输入一个十进制正整数...\n" << "nDec="; cin >> nDec; cout << "转换为二进制是:"; D10to2_8_16(nDec,2); cout << endl; cout << "转换为八进制是:0"; D10to2_8_16(nDec,8); cout << endl; cout << "转换为十六进制是:0x"; D10to2_8_16(nDec,16); cout << endl; } 四、程序清单 #include #include #define N 2 //可以控制进制转换 using namespace std; typedef struct{ int *top; int *base; int stacksize; }stack;

数据库实验报告三

数据库实验报告三

《数据库原理》实验报告 实验五: 触发器、存储过程和函数实验六: ODBC/JDBC数据库编程 学号姓名班级日期2013302534 杨添文10011303 2015.10.3 1 实验五:触发器、存储过程和函数 一、实验内容 1.使用系统存储过程(sp_rename)将视图“V_SPJ”更名为“V_SPJ_三建”。(5 分) (1)在原有数据库SPJ中,建立如下语句: exec sp_rename'V_SPJ','V_SPJ三建' (2)结果为: 2.针对SPJ数据库,创建并执行如下的存储过程:(共计35分) (1)创建一个带参数的存储过程—jsearch。该存储过程的作用是:当任意 输入一个工程代号时,将返回供应该工程零件的供应商的名称(SNAME) 和零件的名称(PNAME)以及工程的名称(JNAME)。执行jsearch存储过 程,查询“J1”对应的信息。(10分)

(1)存储过程为: create procedure jsearch(@searchingfor_jno nchar(20)) as begin select J.JNAME,S.SNAME,P.PNAME from S,P,J,SPJ where SPJ.JNO = @searchingfor_jno and SPJ.JNO=J.JNO and SPJ.SNO=S.SNO and SPJ.PNO=P.PNO End use[SPJ] go (2)执行存储过程如下: declare @solution int exec @solution = [dbo].[jsearch] @searchingfor_jno =N'J1' select'solution'= @solution go (3)结果: (2)使用S表,为其创建一个加密的存储过程—jmsearch。该存储过程的作 用是:当执行该存储过程时,将返回北京供应商的所有信息。(10 分) create procedure jmsearch with encryption as

相关文档
最新文档