1、栈和队列的定义及特点;2、栈的顺序存储表示;3、队列(精).pptVIP

  • 8
  • 0
  • 约1.59万字
  • 约 51页
  • 2019-08-31 发布于四川
  • 举报

1、栈和队列的定义及特点;2、栈的顺序存储表示;3、队列(精).ppt

用 C 语言定义链队列结构如下: typedef struct QNode { QElemtype data; struct QNode *next; } Qnode, *QueuePtr; // 定义队列的结点 typedef struct { QueuePtr *front; // 队头指针 QueuePtr *rear; // 队尾指针 }LinkQueue; Status InitQueue (LinkQueue Q)  { // 构造一个空队列 Q   Q.front = Q.rear = (QueuPtr) malloc (sizeof(QNode));   if (!Q.front) exit (OVERFLOW); // 存储分配失败    Q.front - next = NULL;   return OK;  } 队列的基本操作在链队列中的实现: 队列的初始化: a1 a2 a3 ^ Q.front Q.rear 销毁队列: = null = null Status DestroQueue (LinkQueue Q)   { while (Q.front) { Q.rear = Q.front - next;    free (Q.front);     Q.front = Q.rear; } return OK;   } ∧ rear … front ∧ x ∧ y 插入操作在链队列中的实现 p p Status EnQueue (LinkQueue Q, QElemType e)   { // 插入元素 e 为 Q 的新的队尾元素    p = (QueuePtr) malloc (sizeof (QNode)); if (!p) exit (OVERFLOW); p - data = e; p - next = NULL;    Q.rear - next = p;    Q.rear = p; return OK;   } Status DeQueue (LinkQueue Q, QElemType e)   { if (Q.front == Q.rear) return ERROR; p = Q.front - next; e = p - data;    Q.front - next = p - next;    if (Q.rear == p) Q.rear = Q.front; free (p); return OK;   } ∧ front rear y x 删除操作在链队列中的实现 p ▲ p ∧ 填空题部分 1、栈的特点是( ),队列的特点是( )。 2、线性表、栈和队列都是( )结构,可以在线性表的( ) 位置插入和删除元素,栈只能在( )插入和删除元素, 队列只能在( )插入元素和( )删除元素。 3、设栈 S 和队列 Q 的初始状态皆为空,元素a1, a2, a3, a4, a5 和 a6 依次通过一个栈,一个元素出栈后即进入队列 Q,若 6 个元素出队列的顺序是 a3, a5, a4, a6, a2, a1 则栈 S 至少应 该容纳 ( ) 个元素。 4、若队列的入队序列是 1, 2, 3, 4,则出队序列是()。 (A)4,3,2,1(B)1,2,3,4(C)1,4,3,2(D)3,2,4,1 作业 3.11、3.12 3.4.3 循环队列-队列的顺序表示和实现 是限制仅在表头删除和表尾插入的顺序表。 头尾 指针 利用一组地址连续的存储单元依次存放队列中的数据元素。 rear front rear front J1 J2 J3 头、尾指针和队列元素之间的关系 rear front J3 rear front 在非空队列里,头指针始终指向队头元素 尾指针始终指向队尾元素的下一位置。 因为:队头和队尾的位置是变化的,所以:设头、尾指针。

文档评论(0)

1亿VIP精品文档

相关文档