淮海工学院数据结构第2次实验.docx
- 文档编号:26474846
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:16
- 大小:198.62KB
淮海工学院数据结构第2次实验.docx
《淮海工学院数据结构第2次实验.docx》由会员分享,可在线阅读,更多相关《淮海工学院数据结构第2次实验.docx(16页珍藏版)》请在冰豆网上搜索。
淮海工学院数据结构第2次实验
淮海工学院数据结构第2次实验
淮海工学院计算机科学系
实验报告书
课程名:
《数据结构》
题目:
线性数据结构实验
(栈与对立队列及其应用)
班级:
学号:
2012122693
姓名:
线性表算法实现与应用报告要求
1目的与要求:
1)掌握栈与队列的数据类型描述及特点;
2)掌握栈的顺序和链式存储存表示与基本算法的实现;
3)掌握队列的链式和循环存储表示与基本操作算法实现;
4)掌握栈与队列在实际问题中的应用和基本编程技巧;
5)按照实验题目要求,独立完成实际程序的编写编写、调试和运行,并通过用例数的运行过程抓获相关屏面验证程序设计的正确性;
7)由于国庆节占用授课时间,所以本次实验将不做统一上机安排,要求同学们节日期间自行完成实验任务,并于第6周周4以前按时提交实验报告。
2实验内容或题目
(一)必做题:
1、实现顺序栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整型、字符型等),并给出栈的每次操作变化状态;
2、实现链栈的创建(初始化)、压入(插入)、弹出(删除)操作(数据元素类型自己选取,如整
}
intPush(SeqStack*S,intx)//压栈
{
if(S->top==Size-1)
return(FALSE);
S->top++;
S->elem[S->top]=x;
return(TRUE);
}
intPop(SeqStack*S,int*x)//弹出
{
if(S->top==-1)
return(FALSE);
else
{
*x=S->elem[S->top];
S->top--;
return(TRUE);
}
}
voidmain()
{
SeqStackS;
intx,y,i,l;
InitStack(&S);
if(!
IsFull(&S))
printf("栈空:
\n");
printf("输入要压入的元素个数(50以内):
\n");
scanf("%d",&l);
printf("输入要压入的元素:
\n");
for(i=0;i { scanf("%d",&y); Push(&S,y); } printf("弹出: \n"); while(! IsEmpty(&S)) { Pop(&S,&x); printf("%d\n",x); } } 第二题: #defineTRUE1 #defineFALSE0 #include #include typedefstructnode { intdata; structnode*next; }LinkStackNode; typedefLinkStackNode*LinkStack; intIsEmpty(LinkStackS) { returnNULL==S->next? TRUE: FALSE; } intInitStack(LinkStack*S) { *S=(node*)malloc(sizeof(node)); if(NULL==*S) returnFALSE; (*S)->next=NULL; returnTRUE; } intPush(LinkStackS,intx) { LinkStackNode*temp; temp=(LinkStackNode*)malloc(sizeof(LinkStackNode)); if(temp==NULL) return(FALSE); temp->data=x; temp->next=S->next; S->next=temp; return(TRUE); } intPop(LinkStackS,int*x) { LinkStackNode*temp; temp=S->next; if(temp==NULL) return(FALSE); S->next=temp->next; *x=temp->data; free(temp); return(TRUE); } voidmain() { LinkStackNode*s; InitStack(&s); intx,i,l; if(IsEmpty(s)) printf("栈空\n"); printf("请输入压入元素个数(50以内): \n"); scanf("%d",&l); printf("请输入压入元素: \n"); for(i=0;i { scanf("%d",&x); Push(s,x); } printf("弹出: \n"); while(! IsEmpty(s)) { Pop(s,&x); printf("%d\n",x); } } 第三题: #include #include #defineTRUE1 #defineFALSE0 #defineMAXSIZE50 typedefstruct { intelement[MAXSIZE]; intfront; intrear; }SeqQueue; voidInitQueue(SeqQueue*Q) { Q->front=Q->rear=0; } intEnterQueue(SeqQueue*Q,intx) { if((Q->rear+1)%MAXSIZE==Q->front) return(FALSE); Q->element[Q->rear]=x; Q->rear=(Q->rear+1)%MAXSIZE; return(TRUE); } intDeleteQueue(SeqQueue*Q,int*x) { if(Q->front==Q->rear) return(FALSE); *x=Q->element[Q->front]; Q->front=(Q->front+1)%MAXSIZE; return(TRUE); } intIsEmpty(SeqQueue*Q) { if(Q->front==Q->rear) return(TRUE); else return(FALSE); } voidmain() { SeqQueues; InitQueue(&s); intx,i,l; if(IsEmpty(&s)) printf("此时为空队列\n"); printf("请输入进队元素个数\n"); scanf("%d",&l); printf("请输入元素\n"); for(i=0;i { scanf("%d",&x); EnterQueue(&s,x); } printf("出队: \n"); while(! IsEmpty(&s)) { DeleteQueue(&s,&x); printf("%d\n",x); } if(IsEmpty(&s)) printf("此时为空队列\n"); } 第四题: #include #include #defineTRUE1 #defineFALSE0 typedefstructNode { intdata; structNode*next; }LinkQueueNode; typedefstruct { LinkQueueNode*front; LinkQueueNode*rear; }LinkQueue; intIsEmpty(LinkQueue*Q) { returnQ->front==Q->rear? TRUE: FALSE; } intInitQueue(LinkQueue*Q) { Q->front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode)); if(Q->front! =NULL) { Q->rear=Q->front; Q->front->next=NULL; return(TRUE); } elsereturn(FALSE); } intEnterQueue(LinkQueue*Q,intx) { LinkQueueNode*NewNode; NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode)); if(NewNode! =NULL) { NewNode->data=x; NewNode->next=NULL; Q->rear->next=NewNode; Q->rear=NewNode; return(TRUE); } elsereturn(FALSE); } intDeleteQueue(LinkQueue*Q,int*x) { LinkQueueNode*p; if(Q->front==Q->rear) return(FALSE); p=Q->front->next; Q->front->next=p->next; if(Q->rear==p) Q->rear=Q->front; *x=p->data; free(p); return(TRUE); } voidmain() { LinkQueueq; intx,i,l; InitQueue(&q); if(IsEmpty(&q)) printf("此时为空队列\n"); printf("请输入进队元个数素\n"); scanf("%d",&l); printf("请输入元素: \n"); for(i=0;i { scanf("%d",&x); EnterQueue(&q,x); } printf("出队: \n"); for(i=0;i { DeleteQueue(&q,&x); printf("%d\n",x); } if(IsEmpty(&q)) printf("此时为空队列\n"); } 4测试数据与实验结果(可以抓图粘贴) 5结果分析与实验体会 开始在编写第一题时,将所有代码完成后一直报错,反复检查代码没有错误,后来看到头文件名是#include 通过这次试验编程,对栈及队列加深理解,熟记了一些代码,了解自己不足之处,收获不少。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 淮海 工学院 数据结构 实验