扫码加入训练营

牢记核心词

学习得礼盒

2019考研计算机数据结构考点:栈和队列的链式存储结构

2018-12-18 09:02:50来源:网络

  根据历年考试经验,数据结构所占分值为45分,所占分值比重较大;而且数据结构部分的知识比较难于理解,为方便考生更好地复习计算机专业课,新东方在线整理了考研计算机数据结构的有关内容,以供大家参考,希望对大家有所帮助。

  三、栈和队列的链式存储结构

  1.栈的链式存储结构

  1.1概念

  采用链式存储结构称链栈,并由其栈顶指针惟一确定。

  设ls为栈顶指针,栈=(a1,a2,…,an),a1为栈底元素,an为栈顶元素。

  1.2基本运算

  ①建栈。

  Void initstack(linkstack *s)

  {

  s->top=NULL;

  }

  ②判栈空。

  Int stackempty (linkstack *s)

  {

  return s->top==NULL;

  }

  3进栈。

  Void push(linkstack *s,datatype x)

  {

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

  p->data=x;

  p->next=s->top;

  s->top=p;

  }

  ④退栈。

  Datatype pop(linksatck *s)

  {

  datatype x;

  stacknode *p=s->top;

  if(stackempty(s))

  error(“stack underflow”);

  x=p->data;

  s->top=p->next;

  free(p);

  return x;

  }

  5取栈顶元素。

  Datatype stacktop(linkstack *s)

  {

  if(stackempty(s))

  error(“stack is empty”);

  return s->top->data;

  }

  2.队的链式存储结构

  2.1概念

  用链表示的队列简称为链队列。设两个指针front、rear分别指示队头和队尾。为了链队列的操作方便,增加一个头结点,front指向头结点,rear指向队尾元

  素。如图所示:

  

\

  2.2基本运算

  ①建空队

  Void initqueue(linkqueue *q)

  {

  q->front=q->rear=NULL;

  }

  ②判队空。

  Int queueempty(linkqueue *q)

  {

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

  }

  3入队。

  Void enqueue(linkqueue *q,datatype x)

  {

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

  p->data=x;

  p->next=NULL;

  if(queueempty(q))

  q-front=q->rear=p;

  else{

  q->rear->next=p;

  q->rear=p;

  }

  }

  ④出队。

  Datatype dequeue(linkqueue *q)

  {

  datatype x;

  queuenode *p;

  if(queueempty(q))

  error(“queue is underflow”);

  p=q->front;

  x=p->data;

  q->front=p->next;

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

  free(p);

  return x;

  }

  5取队头元素。

  Datatype queuefront(linkqueue *q)

  {

  if(queueempty(q))

  error(“queue is empty”);

  return q->front->data;

  }


本文关键字: 2019考研计算机

考研英语核心词汇营

背词+听课+练习+督学,学习得礼盒

更多资料
更多>>
更多内容

关注新东方在线考研服务号

获得21考研真题及答案解析

1. 打开手机微信【扫一扫】,识别上方二维码;
2.点击【关注公众号】,获取资料大礼包。

考研资料大礼包
近10年考研真题及答案免费下载
更多>>
更多公开课>>
更多>>
更多资料