`
v5qqbrowser
  • 浏览: 356758 次
文章分类
社区版块
存档分类
最新评论

单链表的转置

 
阅读更多
#include <stdio.h> 
#include <malloc.h> 

typedef struct Node
{
	int data;
	struct Node *next;
}SList;

SList * creat(int a[],int l)/*按照一个数组中的内容初始化链表*/ 
{
	int j;
	SList *h,*p,*e;
	h=(SList*)malloc(sizeof(SList));
	h->data=a[0];
	h->next==NULL;
	if(l<1)
	{
		return(h);
	}
	for(j=1;j<l;j++)
	{
		p=(SList*)malloc(sizeof(SList));
		if(j==1)
		{
			h->next=p;	
			e=p;
		}
		else
		{	e->next=p;
			e=p;
		}
		p->data=a[j];
		p->next=NULL;
	}
	return(h);
}

SList *inverse(SList *h)  /*转置一个数组。设三个指针b:before当前位置,p:当前位置,a:after当前位置。每次把p指向b,然后更新指针的位置*/
{
	SList *b,*p,*a;
	if(!h->next)/*链表只有一个结点,直接返回头结点*/
		return h;
	p=h->next;
	
	b=h;
	while(p->next)
	{
		a=p->next;
		p->next=b;
		b=p;
		p=a;
    }
	p->next=b;/*上面的程序运行到最后一个结点就停止了,这个结点还没有链接至前一个*/
	h->next=NULL; /*头指针现在在末尾,下一位指向空*/
	return p;
}
output(SList *h)  /*由于这个链表的头指针里面是有内容的,所以下面是h=h->next*/
{
    while(h)
	{   printf("%d ",h->data);
	    h=h->next;
    } 
}             
main()
{
      int a[5]={3,4,5,6,7};
	  SList *h = creat(a,5);
	  output(h); 
	  SList *vh = inverse(h);
	  output(vh); 
      system("pause");
}

分享到:
评论

相关推荐

    单链表转置

    这是一个单链表就地转置的代码!可以实现其转置的功能,C++写的

    单链表的创建和就地转置报告 C语言

    单链表的创建和就地转置报告,含算法分析、源码等

    fe-study-kerno:酷诺2223届前端星学习记录

    Kerno 22/23届前端星任务提交 提交格式 将每天的任务提交至对应到日期文件夹中即可,文件夹名称统一使用 “学号-姓名拼音”,例如“201731061422-xiaozou“ ...算法与数据结构:单链表转置 ES5基础 2020-09-03 算法与

    链表基本操作及实现大全

    使用VS2005平台开发,语法为原始C语言,实现以下算法: 【1】:测试尾部插入结点建立单链表 【2】:测试头部插入结点建立...【14】:单链表的转置算法演示(采用遍历原单链表,插入到新的单链表中去) 供大家学习交流。

    Python单链表简单实现代码

    主要介绍了Python单链表简单实现代码,结合实例形式分析了Python单链表的具体定义与功能实现技巧,需要的朋友可以参考下

    数据结构实现单链表的基本操作

    主要是单链表中元素的插入,删除,还有转置,用C++编写的

    算法与树据结构实验(顺序表链表 KMP 表达式求值 二叉树的基本操作 矩阵的转置)

    这是本人的算法与数据结构实验,一共包括六个实验——顺序表的基本操作,链表的基本操作,矩阵的转置,二叉树的建立与基本操作,串的基本操作(KMP算法),利用栈求表达式值。全部调试完毕,随时可用,供大家参考。

    数据结构实验

    1. 学会定义单链表的结点类型,实现对单链表的一些基本操作和具体的函数定义,了解并掌握单链表的类定义以及成员函数的定义与调用。 2. 掌握单链表基本操作及两个有序表归并、单链表逆置等操作的实现。 二 、实验...

    线性表和顺序表原地逆置

    本代码包括了线性表(单链表)和顺序表(数组)的原地逆置的方法

    数据结构和算法动画演示

    三元组表的转置 串的顺序存储 单链表结点的插入 单链表结点的删除 头插法建单链表 尾插法建表 循环队列操作演示 栈与递归 冒泡排序 直接插入排序 直接选择排序 规并排序 快速排序 堆排序 希儿排序 桶式排序法 基数...

    各种算法的flash演示

    B树的删除.rar B树的生长过程.rar 三元组表的转置.rar 中序线索化二叉树.rar 串的顺序存储.rar 二分查找.rar 二叉排序树的删除.rar 二叉排序树的生成.rar 二叉树的建立.rar 克鲁斯卡尔...

    数据结构课件+Demo程序(全)打包

    三元组转置 二分法查找 二叉树 单链表 哈夫曼树 图 拓扑排序 排序 栈 队列 顺序表

    数据结构和算法Flash动画演示

    一些算法的 flash动画演示:B树的删除,B树的生长过程,三元组表的转置,中序线索化二叉树,串的顺序存储,二分查找,二叉排序树的删除,二叉排序树的生成,二叉树的建立,克鲁斯卡尔算法构造最小生成树,冒泡排序,...

    数据结构动画演示.7z

    资源包含了几乎所有的数据结构的动画视频,帮助我们更好的理解数据... '冒泡排序.swf', '分块查找.swf', '单链表结点的删除.swf', '单链表结点的插入.swf', '图的深度优先遍历.swf', '基数排序.swf', '堆排序.swf', '头

    数据结构(Java版)(第2版)习题解答

    【习5.1】 求一个矩阵的转置矩阵。 20 第6章 树和二叉树 21 【习6.1】 画出3个结点的各种形态的树和二叉树。 21 【习6.2】 找出分别满足下面条件的所有二叉树。 21 【习6.3】 输出叶子结点。 21 【习6.4】 求一棵...

    Flash动画演示 数据结构和算法

    三元组表的转置.swf 中序线索化二叉树.swf 串的顺序存储.swf 二分查找.swf 二叉排序树的删除.swf 二叉排序树的生成.swf 二叉树的建立.swf 克鲁斯卡尔算法构造最小生成树.swf 冒泡排序.swf 分块查找.swf 单链表结点的...

    数据结构动画演示学习工具SWF.zip

    树的删除.swfB树的生成.swf查找中序线索二叉树后继.swf串的顺序存单链表...转置.swf树、森林和二叉树的转换.swf顺序表的插入.swf顺序表的删除运算.swf顺序查找.swf顺序队列操作.swf顺序栈(4个存储空间).swf顺序栈1....

    数据结构动画演示

    '冒泡排序.swf', '分块查找.swf', '单链表结点的删除.swf', '单链表结点的插入.swf', '图的深度优先遍历.swf', '基数排序.swf', '堆排序.swf', '头插法建单链表.swf', '寻找中序线索化二叉树指定结点的前驱.swf', '...

    数据结构实践

    链表 单链表 LinkList 循环链表 ClinkList 双循环链表 DLinkList 静态链表 SlinkList 应用 集合并 MerGroup 多项式求和 Poly 3 栈 顺序栈 SqStack 链栈 LinkStack 栈应用 数制转换 Conversion 表达式计算 ...

Global site tag (gtag.js) - Google Analytics