public class Test {
/**
* @param args
*/
public static void main(String[] args) {
//单边链表的生成与反转,方法二
int []arr={3,5,1,2,4};
ListTest listTest=new ListTest();
Node head=listTest.create(arr);
Node sourNode=head;
while(sourNode!=null){
System.out.print(" "+sourNode.getValue());
sourNode=sourNode.getNext();
}
System.out.println(" ");
Node reNode=listTest.revers(head);
while(reNode!=null){
System.out.print(" "+reNode.getValue());
reNode=reNode.getNext();
}
}
}
public class ListTest {
public Node create(int []arr) {
Node head=new Node(arr[0]);
Node cur=null;
Node tempNode=null;
for (int i = 1; i < arr.length; i++) {
tempNode=new Node(arr[i]);
if(i==1){
head.setNext(tempNode);
}else {
cur.setNext(tempNode);
}
cur=tempNode;
}
return head;
}
public Node revers(Node head){
if((null==head)||(null==head.getNext())){
return head;
}
Node pPre=head;
Node pNext=null;
Node curNode=pPre.getNext();
while(curNode!=null){
pNext=curNode.getNext();
curNode.setNext(pPre);
pPre=curNode;
curNode=pNext;
}
head.setNext(null);
return pPre;
}
}
package com.List.sym;
public class Node {
private int value;
private Node next;
public Node(int value){
this.value=value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Node getNext() {
return next;
}
public void setNext(Node next) {
this.next = next;
}
}
分享到:
相关推荐
输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表的数据进行逆置,并输出逆置后的单链表数据。 Input 输入多个整数,以-1作为结束标志。 Output 输出逆置后的单链表数据。 ...
本模版提供了单链表的多种操作,如头插法、尾插法、定位插法、删除、查找和逆置等。以下是对这些功能的详细说明: 1. **头插法**:在链表的头部插入一个新节点。这种方法不需要移动已有节点,只需要更新头节点和新...
### 单链表逆置知识点解析 #### 一、单链表基础概念 单链表是一种常见的线性数据...通过以上分析,我们可以了解到单链表逆置的基本原理及其在代码中的实现方式。对于理解和掌握数据结构与算法的设计有着重要的意义。
在上面的代码中,我们首先定义了链表结点的结构体,然后使用头插法建立单链表,最后使用 ExchangeList 函数将链表逆置。 双链表实现逆置 双链表是一种链式数据结构,它由多个结点组成,每个结点包含数据域、前驱...
例如,单链表的逆置,单链表的合并,找到单链表的中间节点等的算法实现。下面这个是单链表的结构体的定义: 代码如下:typedef struct LNode{ ElemType data; struct LNode *next;}LinkList;下面的基本的单链表的...
本文档提供了单链表的完整代码,包括链表的创建、遍历、查找、插入、删除、逆置、合并等操作的实现。 一、链表的创建 单链表的创建函数为`creaTaiList()`,该函数使用`malloc`函数动态分配内存,创建一个链表的头...
总结一下,建立单链表的方法主要有尾插法和头插法。尾插法适用于需要保持元素原有顺序的情况,通过设置表尾指针可以高效地插入新元素;头插法则用于创建逆序的链表,例如链表逆置。理解这两种方法的原理并熟练掌握其...
讲解数据结构的常见算法及其代码,以及整个程序原代码,适合广大初级以及入门朋友学习 参考!数据结构与算法基本程序目录 一、 线性表及其操作 1、 尾插法建立一个单链表,并按顺序输出 2、 单链表的元素查找,按...
p1 = ListNode(2) # 建立链表1->2->3->4->None p2 = ListNode(3) p3 = ListNode(4) head.next = p1 p1.next = p2 p2.next = p3 newhead = None p = recurse(head, newhead) # 输出链表4->3->2->1->None ``` 无论是...
本次实验旨在让学生通过具体的应用案例——电话本模拟程序来深入理解单链表的特性,并掌握在其上的各种操作方法。 #### 实验内容概述 实验分为两大部分:首先,利用单链表实现电话本功能;其次,选做部分为设计...
此外,通过编写代码实现单链表的建立、输出、合并、删除重复值以及逆置等功能,不仅锻炼了编程技能,还提高了问题解决的能力。 总之,通过本次实验,我们不仅掌握了单链表的基本操作,而且通过实践加深了对数据结构...
单链表逆置算法的代码实现: ```c void invert(linklist*&head) { datatype q; linklist* p = head; linklist* q = NULL; while (p != NULL) { q = p->next; p->next = q->prev; q->prev = p; p = q; } ...
2. **单链表逆置实现**:`invert`函数采用了典型的双指针方法,一个指针`p`用于记录当前节点,另一个指针`q`用于记录`p`的下一个节点。通过不断交换`q->next`与`p`的指向,实现链表的逆置。最后更新头节点的指向,...
- **单链表逆置**:通过迭代或递归方式改变每个节点的指针方向,使链表反向。 - **约瑟夫环问题**:使用栈或队列来模拟环形结构,根据设定的规则删除节点。 2. **栈**: - **建立堆栈**:初始化空栈。 - **进栈...
插入到头部的代码可能如下: ```c void insertAtHead(int value) { Node* newNode = (Node*)malloc(sizeof(Node)); newNode->data = value; newNode->next = head; head = newNode; } ``` 如果要插入到尾部...
(2)应用实验题由 1~ n(例如 n =10 000 000)的 n 个整数建立顺序表 a(采用列表表示)和带头结点的单链表 h,编写一个实验程序输出分别将所有元素逆置的时间。 在这个实验中,我们将使用 Python 语言实现顺序表...
线性表综合题 (1) 按照输入的顺序建立顺序表 (2) 对顺序表进行排序(直接插入、冒泡、选择、快速、合并) (3) 按照由大到小的顺序建立一个单链表 (4) 链表逆置 (5) 将顺序表和链表合并成一个有序表。...
二:内容:1、已知带头结点的动态单链表L中的结点是按整数值递增排序的,试写一算法将值为x的结点插入到表L中,使L仍然有序。 2、设计一算法,逆置带头结点的动态链表L。要求利用原表的结点空间,并要求用尽可能少的...
- **单链表就地逆置** - 实现链表的逆序排列,即改变各节点之间的连接关系,使链表反转。 - **约瑟夫环问题** - 解决约瑟夫环问题,这是一种典型的递归问题,在计算机科学中有广泛的应用。 #### 三、栈及其操作 ...
描述中的程序包括了单链表的创建、查找、插入、删除和双向链表、单链表逆置以及约瑟夫环问题的解决。 1. **尾插法建立单链表**:通过不断在链表尾部插入新节点,构建一个链表。 2. **元素查找**:根据内容在链表中...