我想知道是否存在一些逻辑来仅使用两个指针来反转链表.
以下用于使用三个指针(即p,q,r)反转单个链表:
struct node {
int data;
struct node *link;
};
void reverse() {
struct node *p = first,
*q = NULL,
*r;
while (p != NULL) {
r = q;
q = p;
p = p->link;
q->link = r;
}
first = q;
}
Run Code Online (Sandbox Code Playgroud)
还有其他替代方法来反转链表吗?在时间复杂度方面,逆转单链表的最佳逻辑是什么?
任何人都可以解释在浏览器和Web服务器之间进行通信的方式吗?我想学习如何
在幕后工作.
在XML文档中使用CDATA元素是否易受攻击?如果是这样,如果我们在XML文档中使用CDATA元素会发生什么?
循环可以出现在单链表(SLL)中.
要删除列表中的循环,首先我们需要检测SLL中的循环,然后删除循环.
任何人都可以告诉如何使用伪代码删除SLL中的循环吗?
我们可以用3个指针做到吗?
有没有替代完成任务?
对于以下C代码(用于交换两个数字),我得到swap
函数的"冲突类型"错误.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b;
printf("enter the numbers to be swapped");
scanf("%d%d",&a,&b);
printf("before swap");
printf("a=%d,b=%d",a,b);
swap(&a,&b,sizeof(int));
printf("after swap");
printf("a=%d,b=%d",a,b);
getch();
}
void swap(void *p1,void *p2,int size)
{
char buffer[size];
memcpy(buffer,p1,size);
memcpy(p1,p2,size);
memcpy(p2,buffer,size);
return(0);
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉为什么会出现错误?
那是什么解决方案?