implement deque using linked list
来源:互联网 发布:北京域名快速备案 编辑:程序博客网 时间:2024/04/28 00:26
implement the follwing operation
push(x,d): Insert item x on the front end of deque d.
pop(d): Remove the front item from deque d and return it.
inject(x,d): Insert item x on the rear end of deque d.
eject(d): Remove the rear item from deque d and return it.
#include <stdio.h>#include <stdlib.h>
//implement dequeue with linked list
typedef struct node
{
int data;
struct node *link;
}node;
typedef struct dequeue
{
node *front;
node *rear;
}dequeue;
void initqueue(dequeue *q,int ele)
{
q->front=q->rear=NULL;
}
void push(dequeue *q,int ele)//Insert item x on the front end of deque d.
{
node *temp;
int *p;
temp=(node *)malloc(sizeof(node));
if(temp){
temp->data=ele;
temp->link=NULL;
if(q->front==NULL){
q->front=q->rear=temp;
}
else{
temp->link=q->front;
q->front=temp;
}
}
else{
fprintf(stderr, "insufficient memroy for new node\n");
}
}
int pop(dequeue *q)//Remove the front item from deque d and return it.
{
if(q->front){
node *temp=q->front;
int ele=temp->data;
q->front=temp->link;
free(temp);
if(q->front==NULL){
q->rear=NULL;
}
temp=NULL;
return ele;
}
else{
fprintf(stderr, "dequeue is empty!\n");
return 0;
}
}
void inject(dequeue *q,int ele)//Insert item x on the rear end of deque d.
{
node *temp;
temp=(node *)malloc(sizeof(node));
if(temp){
temp->data=ele;
temp->link=NULL;
if(q->front==NULL){
q->front=temp;
}
else{
q->rear->link=temp;
}
q->rear=temp;
}
else{
fprintf(stderr, "insufficient memory for new node\n");
exit(1);
}
}
void eject(dequeue *q)//Remove the rear item from deque d and return it.
{
if(q->rear){
int ele=q->rear->data;
if(q->rear==q->front){
free(q->rear);
q->rear=q->front=NULL;
}
else{
node *temp=q->front;
while(temp->link!=q->rear){
temp=temp->link;
}
q->rear=temp;
temp->link=NULL;
temp=NULL;
}
return ele;
}
else{
fprintf(stderr, "dequeue is empty!\n");
return;
}
}
0 0
- implement deque using linked list
- Implement Deque with Python list
- Implement Double Linked List from Stack
- HWK:A doubly linked list using class
- leetcode_Sort a linked list using insertion sort.
- Sort a linked list using insertion sort
- Reverse singly linked list using Java
- Sort a linked list using insertion sort
- 单链表的C++实现 Implement of Linked List
- Reverse linked list using stack and stack's implementation
- How to create Linked list using C/C++
- leetcode上的Sort a linked list using insertion sort
- 147. Sort a linked list using insertion sort
- 双向链表的C++实现 Implement of Doubly Linked List
- 2.7 Implement a function to check if a linked list is a palindrome
- C Program to Implement a Doubly Linked List & provide Insertion, Deletion & Display Operations
- Implement Stack Using Queue
- Implement Stack using Queues
- android.mk 详解
- shader 初步应用 --Triangle
- 关于mysql varchar字段 存储中文出现乱码的问题
- java的静态导入
- 目前最好的,以rtmp发送264到red5服务器的代码,darkdragonking亲测可用--《到H264视频通过RTMP直播》
- implement deque using linked list
- Linux HA集群——共享存储篇
- OC特殊语法区别知识点总结
- 文件上传组件 开发
- poj 1823 Hotel(数据结构:线段树--区间更新)
- Hadoop 64位编译
- 主键与唯一键区别
- linux定时备份mysql数据库
- 『常识』免费 SVN 服务器收集