学文网

数据结构实验报告

时间:2023-08-17 21:34:33 文/黄飞老师 报告学文网www.xuewenya.com

  数据结构实验报告1

  一、实验目的及要求

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

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

  二、实验内容

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

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

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

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

  顺序栈:

  Status InitStack(SqStack &S)

  {

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

  if(!S.base)

  return ERROR;

  S.top=S.base;

  S.stacksize=STACK_INIT_SIZE;

  return OK;

  }

  Status DestoryStack(SqStack &S)

  {

  free(S.base);

  return OK;

  }

  Status ClearStack(SqStack &S)

  {

  S.top=S.base;

  return OK;

  }

  Status StackEmpty(SqStack S)

  {

  if(S.base==S.top)

  return OK;

  return ERROR;

  }

  int StackLength(SqStack S)

  {

  return S.top-S.base;

  }

  Status GetTop(SqStack S,ElemType &e)

  {

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

  {

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

  if(!S.base) return ERROR;

  S.top=S.base+S.stacksize;

  S.stacksize+=STACKINCREMENT;

  }

  *S.top++=e;

  return OK;

  }

  Status Push(SqStack &S,ElemType e)

  {

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

  {

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

  if(!S.base)

  return ERROR;

  S.top=S.base+S.stacksize;

  S.stacksize+=STACKINCREMENT;

  }

  *S.top++=e;

  return OK;

  }

  Status Pop(SqStack &S,ElemType &e)

  {

  if(S.top==S.base)

  return ERROR;

  e=*--S.top;

  return OK;

  }

  Status StackTraverse(SqStack S)

  {

  ElemType *p;

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

  if(!p) return ERROR;

  p=S.top;

  while(p!=S.base)//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)

  {

  case '(':

  case '[':

  case '{':

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

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

  break;

  case ')':

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

  {

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

  flag=FALSE;

  }

  break;

  case ']':

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

  flag=FALSE;

  break;

  case '}':

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

  flag=FALSE;

  break;

  }

  }

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

  return OK;

  else

  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;

推荐文章

河南高考排名243480左右排位理科可以上哪些大学,具体能上什么大学2024-05-24 12:41:37

广西高考排名212400左右排位理科可以上哪些大学,具体能上什么大学2024-05-24 12:37:48

广东高考排名85850左右排位物理可以上哪些大学,具体能上什么大学2024-05-24 12:34:24

陕西高考排名150120左右排位理科可以上哪些大学,具体能上什么大学2024-05-24 12:30:12

福建高考排名3220左右排位历史可以上哪些大学,具体能上什么大学2024-05-24 12:26:10

河北高考排名114880左右排位物理可以上哪些大学,具体能上什么大学2024-05-24 12:22:31

半年个人工作计划四篇2023-08-11 16:06:40

医院座谈会领导讲话稿范文(精选7篇)2023-08-16 01:26:15

阅览室工作计划十五篇)2023-08-25 10:48:13

食品加工企业自查报告范文2023-08-27 15:18:16

食品加工企业自查报告范文2023-08-27 15:18:16

幼儿园员工辞职报告2023-08-12 23:54:39

暑期社会实践体会:难忘永嘉情2023-08-22 04:11:15

工程技术部述职报告2023-08-26 11:07:25

在幼儿园的暑假工作实践报告范文2023-08-23 20:56:38

大学生消费状况调查报告模板2023-08-27 12:58:35

最新文章