代码也很简单,空间复杂度为O(1)。
算法描述,pre记录前一个node,current记录当前node,temp存储current的下一个node。这样就形成了一个循环,temp存储current的下一个node之后又current的next指向pre节点;这样就逆序了一个节点。然后pre和current整体后移一位,继续逆序第二个节点。以此类推。
typedef struct Node{ int value; struct Node *next; }node; node* reverseList(node* head) { if(head==NULL || head->next==NULL) { return head; } node *pre=NULL; node *current=head; node *temp; while(current!=NULL) { temp=current->next; current->next=pre; pre=current; current=temp; } return pre; } int main() { node arr[5]={1,&arr[1],2,&arr[2],3,&arr[3],4,&arr[4],5,NULL}; node *p=reverseList(arr); while(p!=NULL) { printf("%d\n",*p); p=p->next; } system("pause"); return 0; }
相关推荐
线性表的链式存储结构,头插法-倒置,实现倒置
大学初学数据结构一个以头插入创建单链表的代码,比较简单明了
头插法创建单链表,可输入式,数据结构的基本操作,C++代码实现
链表头插法-实现两个递增表合并且将它进行逆置逆序
链表 插入创建,有头插法,尾插法,入门级的,供实验使用
头插法(反向)创建线性链表算法分解演示;头插法也就是创建线性链表时,每次新建的结点插入到头结点之后,这样最后一个插入的结点就成为了创建后链表的第一个结点(注意和头结点的区别)。
单链表的基本操作,单链表头插法、尾插法、创建、插入、删除、遍历
本资源位课程设计希望对你有帮助
头插法、尾插法、链表长度test_c-master.zip
头插法是一种常用的链表插入方法,它可以在链表的头部插入新的节点。下面是头插法的步骤: 1. 创建一个新节点,并将要插入的数据赋值给新节点的数据域。 2. 将新节点的指针域指向原链表的头节点。 3. 将新节点设置为...
因此,利用头插法创建的链表是逆序的,即新插入的元素会位于链表的前端。 在实现头插法时,通常需要用到指针来操作链表。例如,指针H始终指向头结点,而指针s则指向新结点。在每次插入操作中,都会先申请一个新结点...
头插法是一种链表插入操作,主要用于将新节点插入链表的头部。通过改变链表节点的指针关系,头插法能够将新节点放置在链表的起始位置。这种方法简单而高效,适用于大规模数据的插入和删除操作,同时还可以实现链表的...
2.头插法(用头插法建立链表);3.显示(打印链表);4.求表长(输出链表长度);5.后插(在指定节点后面插入);6.前插(在指定节点前面插入);7.按位置插入(将元素插入指定位置);8.排序(将元素升序排列);9....
链表-头插法,尾插法,中间插入.zip
头插法单链表实验报告,执行顺序表的插入、删除操作。 实验要求: 1、 输入要求:用户输入字符串,以“$”结束,用户输入完成之后按顺序输出用户创建的单链表的内容。 2、 输出要求:在屏幕上显示出用户用头插法创建...
数据结构___头插法和尾插法建立链表(各分有无头结点).doc
创建链表插入删除创建链表插入删除创建链表插入删除
头插法--建立字母链表.opt
c语言单链表操作(创建、排序、插入、逆序递归)
头插法 头插法是用结构体数组来实现的。 具体的思路是:在建立邻接表时,记录的不是点而是边,对于每一个点所对应的邻接表都是以栈的形式存储的,也就是说先添加的边在遍历时后取出,除此以外,所有的边用一个结构体...