【发布时间】:2016-11-27 18:48:50
【问题描述】:
我正在尝试滚动作为链表实现的堆栈的前 3 个元素。例如,如果堆栈是: 1 2 3 4 5 在被滚动之前。在滚动函数之后,它应该是:3 1 2 4 5。第三项进入堆栈顶部,其他所有内容在堆栈中向下移动一个位置。这是我一直在玩的滚动功能:
// roll function rolls the top 3 numbers on the stack
struct item *roll(struct item *top){
struct item *cur = top;
struct item *prev = NULL;
int i = 0;
// get cur and prev to point to proper positions in linked list
for(i = 0; i < 3; i++){
prev = cur;
cur = cur->next;
}
// roll the linked list
prev->next = cur->next;
cur->next = top;
top = cur;
return top;
}
【问题讨论】:
-
你的代码有什么问题?
-
你忘了问问题。
-
当我运行时它不能正常工作。结果是相同顺序的链表,但缺少最后一项。我想要一些关于我可能出错的地方的指示。
-
弹出前三个元素。然后按第二个、第一个和第三个。
-
您的数据结构是循环链表还是实际堆栈,其中底部元素具有
.next==NULL?
标签: c linked-list stack