好好学习,天天向上,一流范文网欢迎您!
当前位置:首页 >> 最新范文 内容页

重庆邮电大学-软件技术基础--实验报告(耿道渠)

重庆邮电大学-软件技术基础--实验报告(耿道渠) 本文关键词:重庆,软件技术,邮电大学,实验,基础

重庆邮电大学-软件技术基础--实验报告(耿道渠) 本文简介:《软件技术基础》实验报告实验名称:顺序表的操作班级学号姓名第9周星期2、5,6节成绩一、实验目的:1、掌握顺序表结构的实现方式;2、掌握顺序表常用算法的实现;3、熟悉利用顺序表解决问题的一般思路;4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。二、实验内容:1

重庆邮电大学-软件技术基础--实验报告(耿道渠) 本文内容:

《软件技术基础》实验报告

实验名称:顺序表的操作

9

2

5,6

一、实验目的:

1、掌握顺序表结构的实现方式;

2、掌握顺序表常用算法的实现;

3、熟悉利用顺序表解决问题的一般思路;

4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。

二、实验内容:

1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:

(1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。

(2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。

(3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。

2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。要求实现菜单、初始化、添加、删除和显示等功能。

三、实验结果:

四、实验中遇到的问题及解决方法:

第一次编写C++,感觉力不从心,回去多看看PPT。

五、实验心得体会

对顺序表的一些常用语句不熟悉,对顺序表的整体思路理解不深刻以后要加强练习

附:源程序(自行编写或修改的程序。若为修改程序请注明修改部分的功能,若为书上实例则可不附。)

#include

#include

#include

#include

#define

MAXSIZE

20

using

namespace

std;

int

num;

typedef

struct

{

string

student_number;

string

name;

string

tel;

string

home_phone;

int

id;

}

TEL;

void

shuaxin(TEL);

void

delet(TEL);

void

find(TEL);

void

show(TEL);

int

main(void)

{

int

choose;

TEL

List[MAXSIZE];

while(1)

{

cout

>

choose;

system(“cls“);

while(

choose

4)

{

cout

>

choose;

system(“cls“);

}

switch(choose)

{

case

1:

shuaxin(List);

break;

case

2:delet(List);

break;

case

3:find(List);

break;

case

4:

show(List);

break;

}

//system(“cls“);

}

return

0;

}

void

shuaxin(TEL

list)

{

int

i,j;

for(i

=

0;

i

>

num;

while(

num

MAXSIZE

)

{

system(“cls“);

cout

>

num;

}

system(“cls“);

cout

>

list[j

-

1].student_number;

cin

>>

list[j

-

1].name;

cin

>>

list[j

-

1].tel;

cin

>>

list[j

-

1].home_phone;

cout

>

j;

while(

j

num)

{

cout

>

j;

}

while(list[i].id

!=

j)

i++;

for(j

=

i;

j

>

telnum;

system(“cls“);

for(i

=

0;

i

#include

#include

struct

LNode

{

int

data;

struct

LNodenext;

};

LNodefind(LNodehead,int

x)

{

LNodep=head->next;

while(p!=NULL

return

p;

}

void

Insert(LNodehead,int

i,int

x)

{

if(inext;

k++;

}

if(p==NULL)

coutdata=x;

s->next=p->next;

p->next=s;

}

}

}

void

Delete(LNodehead,int

i)

{

if(inext;

k++;

}

if(p==NULL)

coutnext=p->next;

delete

p;

}

}

}

void

main()

{

LNodehead,*p;

head=new

LNode;

head->next=NULL;

int

i,x,y;

cout>x;

Insert(head,i,x);

}

i=0;

cout>i;

Delete(head,i);

coutnext;

while(p!=NULL)

{

coutdatanext;

}

cout>x;

if(find(head,x)!=NULL)

cout>i>>x;

Insert(head,i,x);

coutnext;

while(p!=NULL)

{

coutdatanext;

}

cout

#include

#include

#include

#define

LEN

sizeof(TEL)

#define

SIZE

sizeof(Size)

int

n

=

0;

typedef

struct

tel

{

char

name[10];

long

num;

struct

tel

next;

}TEL;

typedef

struct

tel_size

{

char

name[10];

long

num;

}Size;

TEL

search(void);//从文件读取

TEL

insert(TELhead);//插入

TEL

del(TEL

head);//删除

void

showall(TEL

head);//输出到屏幕

void

find_name(TEL

head);//通过名字查找

void

find_number(TEL

head);//通过号码查找

TEL

revise(TEL

head);

void

sav(TEL

head);//储存

int

main(void)

{

TEL

head

=

NULL;

int

choose;

printf(“welcome

to

this

telphone

number

system/n“);

head

=

search();

printf(“1.insert/n“);

//选择显示界面

printf(“2.del/n“);

printf(“3.showall/n“);

printf(“4.find_name/n“);

printf(“5.find_number/n“);

printf(“6.revise/n“);

printf(“7.save/n“);

printf(“8.end/n“);

do

//选择项

{

printf(“please

choose

your

choose:/n“);

scanf(“%d“,switch(choose)

{

case

1:head

=

insert(head);break;

case

2:head

=

del(head);break;

case

3:showall(head);break;

case

4:find_name(head);break;

case

5:find_number(head);break;

case

6:head

=

revise(head);break;

case

7:sav(head);break;

case

8:return

0;

default:printf(“input

wrong!/n“);

printf(“/n“);

}

}while(1);

return

0;

}

TEL

search(void)//寻找文件是否存在函数

{

FILE

fp;

TEL

head

=

NULL;

TEL

p2,*

p1;

p1

=

p2

=

(TEL)malloc(LEN);

if(

(

fp

=

fopen(“TELnumber.txt“,“a+“)

)

==

NULL)//打开或者新建文件

{

printf(“cant

open

file!/n“);

exit(0);

}

fseek(fp,0L,0);//文件指针倒回到开头

while(!feof(fp))

{

if(

fread(p1,SIZE,1,fp)

!=

1

)//需要防止读出错误情况

break;

if(head

==

NULL)

head

=

p1;

else

p2->next

=

p1;

p2

=

p1;

n++;

p1

=

(TEL)malloc(LEN);

}

free(p1);

p2->next

=

NULL;

fclose(fp);

return

head;

}

TEL

insert(TEL

head)//插入新号码函数

{

TEL

p0,*

p1,*

p2;

p0

=

(TEL)malloc(LEN);

printf(“please

input

a

name

and

number:/n“);

scanf(“%s

%ld“,p0->name,p1

=

head;

p2

=

p1;

if(head

==

NULL)

{

head

=

p0;

p0->next

=

NULL;

}else

{

while(

strcmp(p0->name,p1->name)

>

0

p1

=

p1->next;

}

if(

strcmp(p0->name,p1->name)

next

=

p0;

p0->next

=

p1;

}else

{

p1->next

=

p0;

p0->next

=

NULL;

}

}

n++;

return

head;

}

TEL

del(TEL

head)//删除函数

{

TEL

p1,*

p2;

p1

=

head;

long

dele;

printf(“please

input

what

number

do

you

want

to

del:/n“);//输入删除的电话号码

scanf(“%ld“,if(head

==

NULL)

printf(“NULL

list!/n“);//空表情况

else

{

while(dele

!=

p1->num

p1

=

p1->next;

}

}

if(dele

==

p1->num)

{

if(dele

==

head->num)//删除在头部情况

head

=

head->next;

else

p2->next

=

p1->next;

//输出删除的数据并用链表架空

printf(“dele

this

person

number:/n“);

printf(“%10s

%15ld“,p1->name,p1->num);

n--;

}else

printf(“cant

find

this

person!/n“);//没找到情况

return

head;

}

void

showall(TEL

head)//打印函数

{

int

i

=

0;

TEL

p;

p

=

head;

if(head

==

NULL)

printf(“NULL

list!/n“);//空表情况

else

{

printf(“there

is

%d

number:/n“,n);

printf(“name

number

/n“);

do

{

i++;

printf(“%d.

%10s

%15ld/n“,i,p->name,p->num);

p

=

p->next;

}while(p

!=

NULL);

}

}

void

find_name(TEL

head)//以名字方式寻找号码

{

TEL

p;

int

dis

=

0;

char

f_name[20];

p

=

head;

printf(“please

input

a

name:/n“);//输入名字

scanf(“%s“,f_name);

if(head

==

NULL)

printf(“NULL

list!/n“);//空表情况

else

{

do

{

if(strcmp(p->name,f_name)

==

0)//只要找到同名

均输出

{

dis

=

1;

printf(“find

this

person:/n“);

printf(“%s

%15ld/n“,p->name,p->num);

}

p

=

p->next;

}while(p

!=

NULL);

}

if(dis

==

0)

printf(“cant

find

this

person!/n“);

}

void

find_number(TEL

head)//以号码方式寻找号码

{

TEL

p;

long

f_num;

int

dis

=

0;//dis作为判定是否找到变量

p

=

head;

printf(“please

input

a

number/n“);//输入号码

scanf(“%ld“,if(head

==

NULL)

printf(“NULL

list!/n“);//空表情况

else

{

do

{

if(f_num

==

p->num)

{

dis

=

1;

break;

}

else

p

=

p->next;

}while(p

!=

NULL);

}

if(dis

==

1)

{

printf(“find

this

person:/n“);

printf(“%s

%15ld/n“,p->name,p->num);

}

else

printf(“cant

find

this

person!/n“);

}

TEL

revise(TEL

head)//修改函数

{

TEL

p

=

head;

int

choose,num,i;

printf(“please

choose

which

do

you

want

to

revise,input

the

number/n“);

//find_name(TEL

head);

scanf(“%d“,for(i

=

2;

i

next;

printf(“1.revise

name/n“);

printf(“2.revise

telephone

number/n“);

scanf(“%d“,switch(choose)

{

case

1:{

printf(“please

input

new

name/n“);

scanf(“%s“,p->name);

break;

}

case

2:{

printf(“please

input

new

telephone

number/n“);

scanf(“%ld“,break;

}

}

return

head;

}

void

sav(TEL

head)//储存函数

{

FILE

fp;

TEL

p;

if(

(

fp

=

fopen(“TELnumber.txt“,“a+“)

)

==

NULL)//打开或者新建文件

{

printf(“cant

open

file!/n“);

exit(0);

}

p

=

head;

while(p

!=

NULL)

{

if(

fwrite(p,SIZE,1,fp)

==

1

)

p

=

p->next;

else

{

printf(“save

wrong!/n“);

exit(0);

}

}

fclose(fp);

}

《软件技术基础》实验报告

实验名称:栈的操作

1

2

2

5,6

一、实验目的:

掌握栈的的定义和运算,了解栈的应用。

二、实验内容:

1、堆栈的测试和应用。要求:

设计一个主函数实现对顺序堆栈代码进行测试。测试方法为:依次把数据元素1,3,5,7,9入栈,然后出栈堆栈中的数据元素并在屏幕上显示。

三、实验结果:

四、实验中遇到的问题及解决方法:

问题不是太多,但是编写过程还是比较艰辛。

五、实验心得体会:

栈在本书中比较重要,要多多理解书本知识,多问老师,多实践。

附:源程序(自行编写或修改的程序。若为修改程序请注明修改部分的功能,若为书上实例则可不附。)

#include

#include

#define

MAX_SIZE

30

using

namespace

std;

struct

SqStack

{

intdata;

int

top;

int

stacksize;

};

int

InitStack(SqStack,int);

void

push(SqStack,int);

void

del(SqStack);

int

main(void)

{

int

choose,size;

int

in,i;

SqStack

p;

cout

>

size;

while(InitStack(

}

system(“cls“);

while(1)

{

cout

>

choose;

while(choose

4)

{

cout

>

choose;

}

system(“cls“);

switch(choose)

{

case

1:cout

>

in;

push(break;

case

2:

del(

break;

case

3:cout

-1)

{

cout

0

s->top

=

-1;

s->data

=

new

int[size];

return

0;

}else

cout

top

stacksize

-

1)

{

s->top++;

s->data[s->top]

=

x;

}else

cout

top

>

-1)

{

x

=

s->data[s->top];

s->top--;

cout

#include

using

namespace

std;

struct

QNode

{

int

data;

struct

QNodenext;

};

struct

LinkQueue

{

struct

QNodefront;

struct

QNoderear;

};

void

init(LinkQueue

int

Queuelenth(LinkQueue

void

EnQueue(LinkQueue

void

DeQueue(LinkQueue

int

main(void)

{

LinkQueue

Q;

int

choose,x,e;

init(Q);

while(1)

{

cout

>

choose;

while(choose

>

3

||

choose

>

choose;

}

switch(choose)

{

case

1:

system(“cls“);

cout

>

x;

EnQueue(Q,x);

break;

case

2:

system(“cls“);

DeQueue(Q);

break;

case

3:

system(“cls“);

x

=

Queuelenth(Q);

cout

next

=

NULL;

Q.rear

=

Q.front;

}

int

Queuelenth(LinkQueue

int

len

=

0;

while(p

!=

Q.rear)

{

len++;

p

=

p->next;

}

return

len;

}

void

EnQueue(LinkQueue

if(Q.rear->next

==

Q.front)

cout

next

=

NULL;

q->data

=

x;

Q.rear->next

=

q;

Q.rear

=

q;

}

}

void

DeQueue(LinkQueue

if(Q.front

==

Q.rear)

cout

next;

e

=

Q.front->data;

cout

#include

#include

#include

#define

maxsize

200

typedef

char

datatype;

typedef

struct

node{

datatype

data;

struct

nodelchild,*rchild;

}

bitree;

bitreecreat()

{

char

ch;

bitreeQ[maxsize];

int

front,rear;

bitreeroot,*s;

root=NULL;

front=1;rear=0;

printf(“请输入二叉树的各节点,@表示虚节点,#表示结束:/n“);

scanf(“%c“,while(ch!=

#

)

{

putchar(ch);

s=NULL;

if(ch!=

@

)

{

s=(bitree)malloc(sizeof(bitree));

s->data=ch;

s->lchild=NULL;

s->rchild=NULL;

}

rear++;

Q[rear]=s;

if(rear==1)

root=s;

else

{

if(s

else

Q[front]->rchild=s;

if(rear%2==1)

front++;

}

scanf(“%c“,}

return

root;

}

void

preorder(bitreep)

{

if(p!=NULL)

{

printf(“%c“,p->data);

preorder(p->lchild);

preorder(p->rchild);

}

return;

}

void

inorder(bitreep)

{

if(p!=NULL)

{

inorder(p->lchild);

printf(“%c“,p->data);

inorder(p->rchild);

}

return;

}

void

postorder(bitreep)

{

if(p!=NULL)

{

postorder(p->lchild);

postorder(p->rchild);

printf(“%c“,p->data);

}

return;

}

void

main()

{

bitreeroot;

int

num;

char

t;

while(1)

{

cout>num;

if(num4)

{

cout>num;

}

system(“cls“);

switch(num)

{

case

1:

root=creat();

getchar();

break;

case

2:

cout

using

namespace

std;

const

int

MAX_SIZE

=

30;

class

Data

{

private:

TAG标签: