使用带sentinel哨兵的双向链表实现栈和队列

本文介绍如何使用双向链表配合sentinel哨兵来实现栈和队列的数据结构。内容包括在Linux 64位和Windows 32位环境下编译的经验,以及遇到在64位Linux下用g++编译时的错误和问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近复习数据结构,这个主题参考了《LINUX一站式编程》,有一些改动。这个代码在linux 64位机器使用gcc下编译通过,在windows 32位机器使用visual studio 6.0编译通过,但是,在linux 64机器使用g++无法编译通过。报错出现在headsentinel和tailsentinel的定义部分,具体原因还没有弄清楚。。。。

函数的定义文件如下

#ifndef LINKEDLISTDEQUE_H
#define LINKEDLISTDEQUE_H
typedef struct node *link;
struct node{
    unsigned char item;
    link prev;
    link next;

};
link make_node(unsigned char item);
void free_node(link p);
link search_1(unsigned char key);
void insert_at_head(link p);
void insert_at_tail(link p);
void delete_node_1(link p);
void delete_node_2(link p);
void traverse(void (*visit)(link));
void destroy(void);
void push(link p);
link pop(void);
void enqueue(link p);
link dequeue(void);
int test();
#endif

函数的实现文件如下

#include <stdlib.h>
#include "linkedlistdeque.h"
struct node tailsentinel;
struct node headsentinel={0,NULL,&tailsentinel};
struct node tailsentinel={0,&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值