源程序:
#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
分享到:
相关推荐
单链表 就地逆置的方法 逆置 txt
实现一个单链表的就地逆置,不使用新的空间,利用原来单链表空间
056 单链表就地逆置 C语言
单链表操作就地逆置删除mink到maxk之间的元素#include<stdio.h>
对以单链表为存储结构的表实现就地逆置,即在原有空间上实现逆置,不开辟新空间
数据结构中单链表就地逆置算法,不是程序设计代码
单链表的逆置方法(头插法、就地逆置法、递归实现)。
单链表的就地逆置单链表的就地逆置单链表的就地逆置单链表的就地逆置单链表的就地逆置
用c语言描述的线形表---链表---带头节点单链表的就地逆置
单链表算法实现增删改查,就地逆置、倒数第k个节点。不使用java任何工具方法,纯原生单链表,前插,修改,尾插,逆置等
单链表实现就地逆序,简单的程序代码。详细的请关注数据结构论坛
可以交换数据的方式实现,但单链表的数据的存取不是随机的,所以可以利用指针的指向转换来实现表的逆置。
数据结构与算法 c++实现 //删除顺序递增表中的重复元素 //对单链表实现就地逆置 //删除递增单链表中的重复元素 适合大二初学数据结构与算法 程序有详细备注 顺序表 单链表
有关单链表的创建,就地逆置,头插法,尾插法,输出等
感觉好就用,自己写的,应该是无毒的,保证可以运行
printf(" * G:就地逆置(La) H:删除x-y的元素(La) *\n"); printf(" * *\n"); printf(" * I:合并(删除相同项) J:合并(保留相同项) *\n"); printf(" * *\n"); printf(" * K:求两链表交集 L:退出程序 *\n"); ...
单链表就地逆置
用头插入法来做,直到输入0时,按enter键结束。
既然都讲到这里了,咱就先来讨论讨论单链表的两种建立方式————头插法和尾插法利用尾插法建立的单链表数据是顺序的,用头插法建立的单链表数据是逆序的例如:用数列 2
2、设计一算法,逆置带头结点的动态链表 L。要求利用原表的结点空间, 并要求用尽可能少的时间完成。 3、假设有两个按元素值递增有序的线性表 A 和 B,均以单链表作存储结构, 试编写算法将 A 表和 B 表归并成一个按...