源程序:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define NULL 0
#define OK 1
typedef int ElemType;
typedef int Status;
//-----单链表的存储结构-----//
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void CreastList_L(LinkList &L,int n){
//创建带头结点的单链表L
LNode *p,*q;
int i;
L=(LNode*)malloc(sizeof (LNode));
L->next=NULL; //先建立一个带头结点的单链表
p=L;
for (i=1;i<=n;i++){
q=(LNode*)malloc(sizeof(LNode)); //生成新结点
printf("Input the %dth data:",i);
scanf("%d",&q->data); //输入元素值
q->next=NULL;
p->next=q;
p=q;
}
}
void ListInverse_L(LinkList &L){
//单链表的就地逆置
LNode *p,*q;
p=L->next;
L->next=NULL;
while(p!=NULL){
q=p->next;
p->next=L->next;
L->next=p;
p=q;
}
}
void PrintList(LinkList &L){
//输出单链表
LNode *p=L->next;
while(p!=NULL){
printf("%d",p->data);
p=p->next;
}
}
void main(){
int n;
LinkList La;
printf("Input the list num:");
scanf("%d",&n);
CreastList_L(La,n);
printf("Before Inverse the list is:");
PrintList(La);
ListInverse_L(La);
printf("\nAfter Inverse the list is:");
PrintList(La);
printf("\n");
}
运行结果:
- 大小: 4.7 KB
分享到:
相关推荐
### 单链表就地逆置的方法 #### 知识点概述 在计算机科学与数据结构领域中,链表是一种常见的线性数据结构,由一系列节点组成,每个节点包含一个数据元素以及指向下一个节点的指针。对于单链表而言,每个节点只有...
单链表就地逆置的算法通常涉及三个指针:前驱指针(prev)、当前指针(curr)和临时指针(temp)。以下是一种常见的实现方法: 1. 初始化前驱指针prev为null,当前指针curr为链表头节点。 2. 遍历链表,对于每个...
单链表操作就地逆置删除mink到maxk之间的元素#include<stdio.h>
对以单链表为存储结构的表实现就地逆置,即在原有空间上实现逆置,不开辟新空间
本话题将探讨如何就地逆置一个单链表,即不使用额外的数据结构或数组,仅通过链表自身的节点进行操作。 首先,我们要理解链表的逆置意味着原来的顺序是 head -> node1 -> node2 -> ... -> nodeN,逆置后变成 head -...
总结起来,单链表的就地逆置是一个高效且节省空间的操作,它通过改变节点的`next`指针关系来达到逆置的目的,适用于处理各种场景下的链表数据结构。这个算法在理解和实现上都相对简单,但对理解链表的特性和指针操作...
单链表的就地逆置单链表的就地逆置单链表的就地逆置单链表的就地逆置单链表的就地逆置
在本文中,我们将探讨三种逆置单链表的方法:头插法、就地逆置法和递归实现。 **头插法** 头插法是一种简单直观的方法,其基本思想是从头到尾遍历链表,每次新节点插入到链表的头部。首先创建一个临时节点,设置为...
用c语言描述的线形表---链表---带头节点单链表的就地逆置
单链表实现就地逆序,简单的程序代码。详细的请关注数据结构论坛
在这个"SingleLinkedList.zip"压缩包中,我们可能找到了一个关于单链表实现的Java代码示例,涵盖了增删改查、就地逆置以及找到倒数第k个节点等常见操作。 首先,让我们深入理解单链表的基本操作: 1. **创建链表**...
单链表的创建、头插法、尾插法和就地逆置 单链表是链表的一种,它的每个节点只包含一个指针,指向下一个节点。单链表的创建可以通过头插法和尾插法来实现。 头插法 头插法是指在单链表的头部插入新节点的方法。其...
本文将详细介绍单链表逆置的四种常用方法:头插法、递归法、迭代法以及就地逆置法,并提供相应的代码实现。 #### 二、头插法 **算法思想**: - 创建一个新的空链表。 - 从原始链表中依次取出节点,并将每个节点插入...
可以交换数据的方式实现,但单链表的数据的存取不是随机的,所以可以利用指针的指向转换来实现表的逆置。
单链表就地逆置是链表逆置算法的一种实现方式。该算法的思想是通过交换链表中的节点指针来实现逆置。算法的时间复杂度为O(n),空间复杂度为O(1),其中n是链表的长度。 算法实现 下面是单链表就地逆置算法的实现...
感觉好就用,自己写的,应该是无毒的,保证可以运行
printf(" * G:就地逆置(La) H:删除x-y的元素(La) *\n"); printf(" * *\n"); printf(" * I:合并(删除相同项) J:合并(保留相同项) *\n"); printf(" * *\n"); printf(" * K:求两链表交集 L:退出程序 *\n"); ...
单链表就地逆置
就地逆置单链表是一个常见的操作,通过三个指针(前一个节点、当前节点和后一个节点)来实现,无需额外的空间。首先,初始化前一个节点为NULL,当前节点为头节点,然后通过迭代更新前一个节点和当前节点的指针,最后...
用头插入法来做,直到输入0时,按enter键结束。