gpt4 book ai didi

c - 队列类型数据结构使用数组实现

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:40 26 4
gpt4 key购买 nike

我遇到过一个情况,我必须实现一个队列类型的数据结构。它是这样的:

(1)假设有一个数组data[50]={1,2,3,4,5,6};

(2) int Front 必须指向第一个索引,int rear 必须指向最后一个索引。

(3)现在我必须添加这个数组的第一个和第二个元素。假设我这样做 (i+2=3) 并且这个 3 将通过 rear+1 (data[rear+1]) 最后设置,现在当第二次执行发生时,我们不必考虑前两个元素(他们已经添加了),所以在这种情况下我们可以做 data[front+2]。 但请注意这里,因为这个 +2 只会在第一次完成 ,之后它只会 +1 (因为我们只添加了一个元素,而第一次我们添加了 2 个元素) .并且加法得到的元素必须走到索引的最后,比如得到的“3”最后会像这样{1,2,3,4,5,6,3}。

(4)所以我们要考虑

(4.a) Rear 每次增加一。

(4.b) Front 增加一个(接受我们添加两个元素的第一次添加)。

(5)我的思路是这样的:

    #include <stdio.h>
#define MAX 50
int data[MAX];
int rear = - 1;
int front = - 1;

void main()
{
int rear=6, front=0;
data[size]={1,2,3,4,5,6};
int count=size;
//First do addition of the first two elements
data[rear]= data[0]+data[1];
for(i=front; i<size*2-1 ; i++) //we are doing data*2-1 because we know the final obtained on doing all the addition until there is 1 element will have the size (size*2-1).
{
do
{
//here we do addition data[rear+1]=data[front]+data[rear];
// rear++;
count--;
}while (count>1);
}
for(i=0; i<size*2-1 ; i++)
{
printf("%d ", data[i]); //Now this must print "1,2,3,4,5,6,3,6,9,12,21" (addition of element at front and rear)
}

}

**我的疑问是如何将 Front 增加两个第一次添加并在第一次添加后增加一个以便 first 将始终指向要添加的元素(增加并不困难,我已经做到了)。请帮助我进行前端增量,算法和代码将不胜感激。

最佳答案

int max = 50;
int index = 0;
int endIndex = 5; //You can compute the length. I will just hard code
int list[max] = {1,2,3,4,5,6};
int front = list[index];
int rear = list[endIndex];

while (index!= endIndex)
{
if (index==0)
{
index++;
list[endIndex+index] = front+list[index];
rear = list[endIndex+index];
index++;
front = list[index];
}
else
{
list[rear+1] = front + rear;
index++;
front = list[index];
rear = list[endIndex+index];
}
}

这应该可以满足您的需求。我没有测试它,但我相信它就是你所描述的。

关于c - 队列类型数据结构使用数组实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21606941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com