首页 > 范文

数据结构实验报告(数据结构实验报告总结)

更新时间:2023-06-16 04:15:40 阅读: 评论:0

数据结构实验报告

  想必学计算机专业的同学都知道数据结构是一门比较重要的课程,那么,下面是CN人才公文网小编给大家整理收集的数据结构实验报告,供大家阅读参考。

  数据结构实验报告1

  一、实验目的及要求

  1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们。

  本实验训练的要点是“栈”和“队列”的观点;

  二、实验内容

  1) 利用栈,实现数制转换。

  2) 利用栈,实现任一个表达式中的语法检查(选做)。

  3) 编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列);

  三、实验流程、操作步骤或核心代码、算法片段

  顺序栈:

  Status InitStack(SqStack &S)

  {

  S.ba=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));

  if(!S.ba)

  return ERROR;

  S.top=S.ba;

  S.stacksize=STACK_INIT_SIZE;

  return OK;

  }

  Status DestoryStack(SqStack &S)

  {

  free(S.ba);

  return OK;

  }

  Status ClearStack(SqStack &S)

  {

  S.top=S.ba;

  return OK;

  }

  Status StackEmpty(SqStack S)

  {

  if(S.ba==S.top)

  return OK;

  return ERROR;

  }

  int StackLength(SqStack S)

  {

  return S.top-S.ba;

  }

  Status GetTop(SqStack S,ElemType &e)

  {

  if(S.top-S.ba>=S.stacksize)

  {

  S.ba=(ElemType *)realloc(S.ba,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));

  if(!S.ba) return ERROR;

  S.top=S.ba+S.stacksize;

  S.stacksize+=STACKINCREMENT;

  }

  *S.top++=e;

  return OK;

  }

  Status Push(SqStack &S,ElemType e)

  {

  if(S.top-S.ba>=S.stacksize)

  {

  S.ba=(ElemType *)realloc(S.ba,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));

  if(!S.ba)

  return ERROR;

  S.top=S.ba+S.stacksize;

  S.stacksize+=STACKINCREMENT;

  }

  *S.top++=e;

  return OK;

  }

  Status Pop(SqStack &S,ElemType &e)

  {

  if(S.top==S.ba)

  return ERROR;

  e=*--S.top;

  return OK;

  }

  Status StackTraver(SqStack S)

  {

  ElemType *p;

  p=(ElemType *)malloc(sizeof(ElemType));

  if(!p) return ERROR;

  p=S.top;

  while(p!=S.ba)//S.top上面一个...

  {

  p--;

  printf("%d ",*p);

  }

  return OK;

  }

  Status Compare(SqStack &S)

  {

  int flag,TURE=OK,FALSE=ERROR;

  ElemType e,x;

  InitStack(S);

  flag=OK;

  printf("请输入要进栈或出栈的元素:");

  while((x= getchar())!='#'&&flag)

  {

  switch (x)

  {

  ca '(':

  ca '[':

  ca '{':

  if(Push(S,x)==OK)

  printf("括号匹配成功!nn");

  break;

  ca ')':

  if(Pop(S,e)==ERROR || e!='(')

  {

  printf("没有满足条件n");

  flag=FALSE;

  }

  break;

  ca ']':

  if ( Pop(S,e)==ERROR || e!='[')

  flag=FALSE;

  break;

  ca '}':

  if ( Pop(S,e)==ERROR || e!='{')

  flag=FALSE;

  break;

  }

  }

  if (flag && x=='#' && StackEmpty(S))

  return OK;

  el

  return ERROR;

  }

  链队列:

  Status InitQueue(LinkQueue &Q)

  {

  Q.front =Q.rear=

  (QueuePtr)malloc(sizeof(QNode));

  if (!Q.front) return ERROR;

  Q.front->next = NULL;

  return OK;

  }

  Status DestoryQueue(LinkQueue &Q)

  {

  while(Q.front)

  {

  Q.rear=Q.front->next;

  free(Q.front);

  Q.front=Q.rear;

  }

  return OK;

  }

  Status QueueEmpty(LinkQueue &Q)

  {

  if(Q.front->next==NULL)

  return OK;

  return ERROR;

  }

  Status QueueLength(LinkQueue Q)

  {

  int i=0;

  QueuePtr p,q;

  p=Q.front;

  while(p->next)

  {

  i++;

  p=Q.front;

  q=p->next;

  p=q;

  }

  return i;

  }

  Status GetHead(LinkQueue Q,ElemType &e)

  {

  QueuePtr p;

  p=Q.front->next;

  if(!p)

  return ERROR;

  e=p->data;

  return e;

  }

  Status ClearQueue(LinkQueue &Q)

  {

  QueuePtr p;

  while(Q.front->next )

  {

  p=Q.front->next;

  free(Q.front);

  Q.front=p;

  }

  Q.front->next=NULL;

  Q.rear->next=NULL;

  return OK;

  }

  Status EnQueue(LinkQueue &Q,ElemType e)

  {

  QueuePtr p;

  p=(QueuePtr)malloc(sizeof (QNode));

  if(!p)

  return ERROR;

  p->data=e;

  p->next=NULL;

  Q.rear->next = p;

  Q.rear=p; //p->next 为空

  return OK;

  }

  Status DeQueue(LinkQueue &Q,ElemType &e)

本文发布于:2023-06-16 04:15:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/meiwen/b093100ed2e17c178cf84952674df65a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:数据结构实验报告(数据结构实验报告总结).doc

本文 PDF 下载地址:数据结构实验报告(数据结构实验报告总结).pdf

标签:数据结构   报告
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图