关于C语言结构体队列的问题,求大神解答,急。 5

我在程序中定义了三个结构体动态队列:structrequest*request_temp_queue;structrequest*request_r_queue;stru... 我在程序中定义了三个结构体动态队列:
struct request *request_temp_queue;
struct request *request_r_queue;
struct request *request_w_queue;

其中request结构体内容如下:
struct request{
int64_t time; //请求到达的时间,单位为us,这里和通常的习惯不一样,通常的是ms为单位,这里需要有个单位变换过程
unsigned int lsn; //请求的起始地址,逻辑地址
unsigned int size; //请求的大小,既多少个扇区
unsigned int operation; //请求的种类,1为读,0为写

unsigned int* need_distr_flag;
unsigned int complete_lsn_count; //record the count of lsn served by buffer

int distri_flag; // indicate whether this request has been distributed already

int64_t begin_time;
int64_t response_time;
double energy_consumption; //记录该请求的能量消耗,单位为uJ

struct sub_request *subs; //链接到属于该请求的所有子请求
struct request *next_node; //指向下一个请求结构体
};

现在我在struct request *request_r_queue 和 struct request *request_w_queue中分别存放了数据,现在想要将这两个队列中的内容先后放到struct request *request_temp_queue中,请问应该如何用代码实现?
主要是不知道每次将request_r_queue或request_w_queue中的一个值放入request_temp_queue中之后,如何删掉request_r_queue或request_w_queue中的这个值?
展开
 我来答
漠影歌
2015-06-12 · TA获得超过807个赞
知道小有建树答主
回答量:483
采纳率:50%
帮助的人:448万
展开全部
问题不大,你可以在struct request结构体中加一个字段flag,如果是request_r_queue的话,这个字段值就设置为1,如果是request_w_queue的话,就给设置为0,最后你在删除的时候,就判断这个标志,如果是1或者0,删除相应的值就好
追问
请问如何删掉request_r_queue或者request_w_queue中队首的元素呢?就是只删掉那个已经放到整合队列里的,单个的元素。
追答
整合进去的话还能判断是队首吗?不是已经根据某些原因把顺序打乱的吗?想要删掉某个节点只能通过数据域或者某个已知字段去删除,除非你在一开始就给个标志,判断当前节点是否是头节点,当然,没啥用,删除不用做得这么细吧
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式