struct node
{
int info;
struct node *next;
};
typedef struct node node;
void *printRev(node *head){
int count=0;
int i;
node *beforeFin;
node *tempHead;
tempHead = head;
while(tempHead->next != NULL){
count++;
tempHead->next = tempHead->next->next; //LAST ITERATION SHOULD BE AT THE END OF LIST
}
printf("COUNT IS: %d\n", count);
for(i = 0; i <= count; i++){
beforeFin = Prev(head, tempHead->next);
printf("%d", beforeFin->info);
}
printf("\n");
}
COUNT IS: 3
Segmentation fault (core dumped)
我将感谢任何帮助,我是一个初学者,因为你可能会告诉。提前谢谢大家!
我可以用递归来做这个,但我想学习弄清楚这个方法。
要以相反的顺序打印单个链表,可以使用递归函数。您必须单步执行递归到最后,并在离开递归函数之前打印列表的元素:
void printReverse(node *act)
{
if ( act == NULL ) // terminate if end of list is reached
return;
printRev( act->next ); // print next node
printf( "%d ", act->info ); // print this node
}
如果不想使用递归,当然可以反转列表,然后打印列表,最后再反转一次。
反转列表并不难。遍历列表,获取每个元素,并在列表头部的前面对其重新排序。
node * reverse(node *head)
{
node *act, *prev;
if ( head == NULL )
return;
prev = head;
act = head->next;
while ( act != NULL )
{
prev->next = act->next;
act->next = head;
head = act;
act = prev->next;
}
return head;
}
void printReverse(node *head)
{
node *act;
act = reverse(head);
while ( act != NULL )
{
printf( "%d ", act->info ); // print this node
act = act->next;
}
reverse(head);
}
要以相反的顺序打印数组,我们应事先知道数组的长度。 然后我们可以从数组的长度值开始迭代到零,并且在每次迭代中我们可以打印数组索引的值。 该数组索引应直接从迭代本身派生。 算法 (Algorithm) 让我们首先看看该程序的逐步程序应该是什么 - START Step 1 → Take an array A and define its values Step 2 → Loop for
问题内容: 我有一个LinkedHashMap: 我需要从给定键的位置向后迭代。因此,如果为我提供了第十个项目的密钥,则需要向后迭代哈希表9、8、7等。 问题答案: 您不必遍历它。但是拔下钥匙并将其存储在列表中会很方便。这就是执行indexOf()类型操作的唯一方法。
问题内容: 我尝试了一个小时,但没有找到任何最佳方法来实现反向的哈希图迭代,这就是我拥有的哈希图。 我也看过TreeMap的例子, 但是treemap也按升序给出,我想要的是降序。 问题答案: Hashmap没有特定的顺序。但是您可以使用TreeMap。 也许这个简单的例子可以帮助您:
问题内容: 该程序输出- 它不应该提供输出- 因为首先ai应该打印1,然后执行a.getI()并应该打印A 2 问题答案: 在此表达式中: 首先评估对的调用,然后通过连接加号形成字符串
问题内容: 当我编写或或时,Python不会打印反斜杠符号。相反,它会为前两个错误,并为第二个打印。如何打印反斜杠? 问题答案: 你需要在反斜杠之前加上另一个反斜杠来转义: 对于Python 3之前的版本: 该字符称为转义字符,它以不同的方式解释其后的字符。例如,n它本身只是一个字母,但是当你在其前面加上反斜杠时,它变为,即newline字符。 你可能已经猜到,还需要转义,因此它不像转义符那样起作