数据结构c语言实现采用顺序存储实现队列的初始化、入栈、出栈操作

如题所述

第1个回答  2011-11-10
顺序栈的实现
#include <stdio.h>
#include "iostream.h"
#define STACK_INT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
int InitStack(SqStack *S)
{
S->base==(int *)malloc(STACK_INT_SIZE *sizeof(int));
if(!S->base) exit(-2);
S->top=S->base;
S->stacksize=STACK_INT_SIZE;
return 1;
}
int GetTop(SqStack S,int *e)
{
if(S.top==S.base) return 0;
e=*(S.top-1);
return 1;
}
int Push(SqStack *S,int e)
{
if(S->top-S->base>=S->stacksize)
{
S->base=(int *)realloc(S->base,(S->stacksize+STACKINCREMENT) *sizeof(int));
if(!S->base) exit(-2);
S->top=S->base+S->stacksize;
}
*S->top++=e;
return 1;
}
int Pop(SqStack *S,int e)
{
if(S->top==S->base) return 0;
e=*--S->top;
return 1;
}
main()
{
  int a,b,c;
int *p1,*p2,*p3;
p1=&a;p2=&b;p3=&c;
SqStack *S;
  printf("Initialize the stack.\n");
  InitStack(S);
  Push(S,p1);
Push(S,p2);
Push(S,p3);
GetTop(S,p3);
Pop(S,p3);
}
第2个回答  推荐于2017-09-26
#include<stdio.h>
#include<stdlib.h>
typedef struct Point
{
int data;
struct Point *next;
}P;
P* head , * tail;
int len=0;
void queue_push(P* p)
{
len++;
if(head==NULL)
{
head=tail=p;
}
else
{
tail->next=p;
tail=p;
}
}
int queue_pop()
{
if(len>=1)
{
len--;
int data;
P *h = head;
data = head->data;
head=head->next;
free(h);
return data;
}
else exit(0);
}
void queue_init()
{
head = tail=NULL;
len = 0;
}
//test
int main()
{
int n,i;
queue_init();

for(i=1;i<=10;i++)
{
P* p=(P*)malloc(sizeof(P));
p->data=i;
p->next=NULL;
queue_push(p);
}
for(i=1;i<=10;i++)printf("%d ",queue_pop());
printf("ok");
}本回答被提问者采纳

采用链式存储实现队列的初始化、入队、出队操作
define OVERFLOW -2 typedef struct QNode{\/\/创建队成员 int data;\/\/数据成员 struct QNode *next;}QNode,*QueuePtr;typedef struct{\/\/队头队尾指针 QueuePtr front;QueuePtr rear;}LinkQueue;void InitQueue(LinkQueue &Q)\/\/初始化队列 { Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode))...

数据结构C语言描述的链队列的基本操作(初始化,判空,入队,出队,取对头...
return 1;} \/\/取队头 输出队列所有数就是出队

如何用顺序存储结构实现队列,使得进队和出队时不再移动其他元素_百度...
datatype data[max];int front,rear;}sequeue;front=rear=-1; \/\/进行初始化 入队操作应该是这样的,首先rear++;然后把数据插入,data[rear]=a; (假设a是数据);出对操作和入队类似,首先front++,如果你不需要保存出队的数据,那么就可以了,如果要保存的话,就b=data[front];(b为保存的数...

数据结构定义一个栈并实现入栈和出栈操作的程序c语言完整版
常用数据结构:数组 (Array)、栈 (Stack)、队列 (Queue)、链表 (Linked List)、树 (Tree)、图 (Graph)、堆 (Heap)、散列表 (Hash)

用C语言,数据结构实现进程的创建,追加,删除,查找,退出
1. 后继指针 2. 现场指针 进程创建主要完成数据的初始化,并把进程放入就绪队列 不需要追加函数, 对于删除,退出通常是数据结构的处理, 比较重要的是进程的调度,这里需要涉及到对CPU体系结构的依赖,需要了解CPU的寄存器,X86,ARM, PPC都有区别。

C程序中如何使用堆栈
int a = 0; 全局初始化区 char *p1; 全局未初始化区 main(){ int b; 栈 char s[] = "abc"; 栈 char *p2; 栈 char *p3 = "123456"; 123456\\0在常量区,p3在栈上。static int c =0; 全局(静态)初始化区 p1 = (char *)malloc(10); 堆 p2 = (char *)malloc(20); ...

数据结构专升本学习,队列篇(顺序队和循环队列)
循环队列的初始化、入队、出队操作与顺序队列类似,但实现了更好的空间利用和操作效率。通过循环队列的代码,可以直观理解队列的循环特性,提高数据结构的处理能力。总结,队列作为数据结构的重要组成部分,顺序队列与循环队列各有优势,适用于不同场景。理解队列逻辑,编写代码变得相对容易。循环队列的优化设计...

数据结构c语言怎么运行啊
首先要确定你想采用线性表的顺序存储结构还是链式存储结构。以顺序存储结构为例:include <stdio.h> include <stdlib.h> define ERROR 0 define OK 1 typedef int Status;typedef int ElemType;\/\/顺序表测试用 const int MaxSize=100; \/\/100只是示例性的数据,可以根据实际问题具体定义 const int...

数据结构(六)——栈(一):栈的基本知识
实现栈通常使用数组。首先定义一个数组作为栈的存储空间,使用一个变量top来跟踪栈顶位置。入栈操作时,将元素放入栈顶位置并增加top值;出栈操作则从栈顶取出元素并减少top值。具体实现时,可以使用Java等编程语言。与队列相比,栈和队列都是线性结构,均可以通过数组实现。不同之处在于栈和队列的插入和...

栈的简单理解和操作之顺序栈
顺序栈是栈的一种常见实现方式,它利用连续的存储单元存储元素,从栈底到栈顶。顺序栈的基本操作包括初始化、判断栈空、入栈、出栈和读取栈顶元素。初始化时,将栈顶指针top设置为1,表示栈为空。判断栈是否为空是通过检查top是否为-1来实现的。入栈操作首先要检查栈是否已满,若不满则将top加1并...

相似回答