数据结构java逆置代码 数据结构java逆置代码是什么

数据结构单链表逆置求详细解答

算法利用的是链表的头插入法,结果是与插入次序正好颠倒

成都创新互联公司是少有的成都网站建设、做网站、营销型企业网站、小程序开发、手机APP,开发、制作、设计、卖链接、推广优化一站式服务网络公司,从2013年成立,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评

//这是有表头结点链表的逆置

if (head == NULL)//链表为空就退出

return;

struct node *p = head-next, *pnext = NULL;//p是链表当前结点,pnext指向p的后继结点

head-next = NULL;//断开表头结点和后面链表结点的联系

while (p != NULL)

{//如果后面链表中还有结点

pnext = p-next;//pnext暂存当前结点后继结点的指针

p-next = head-next;//将后面链表的第一个结点插入在前面链表的头部

head-next = p;

p = pnext;// p重新指向后面链表的第一结点

}

用数据结构中的单链表求逆置的编程

用数据结构中的单链表求逆置的编程:

#include"iostream"

using

namespace

std;

struct

node{

int

data;

node

*next;

};

node

*p=NULL;

void

ins(int

x)

//将输入的数采用头插法放入链表中

{

node

*q=new

node;

q-data=x;

q-next=p;

p=q;

}

void

rev(int

i)

//将链表逆置并输出

{

node

*m;

//因为用了头插法放入数据所以输出的应与输入的相同

int

x;

m=p;

p=NULL;

int

j;

while(m!=NULL)

{

node

*n=m-next;

m-next=p;

p=m;

m=n;

}

cout"逆置链表后的结果:";

for(j=0;ji;j++)

{

x=p-data;

coutx;

p=p-next;

}

}

void

main()

{

int

i;

int

a[4];

cout"please

inpute

data(4个数):\n";

for(i=0;i4;i++)

cina[i];

for(i=0;i4;i++)

ins(a[i]);

rev(i);

}

数据结构逆置顺序表,不知道哪里错了,结果正确,交上去是错的

错误原因:

1)题目要求“建立长度为n的顺序表”,这个是要动态申请内存的,不能使用预先定大小的char data[100];代替,因为加入元素个数大于100,这个大小已知的数组就会越界,这是错误一。

2)您代码中输入的变量m是顺序表长度,而却要输入2*m的字符,虽然后面只放入了m个字符给a数组,但是与题目要求不符合,这是错误二。

附加:程序代码不精简,不需要用链表申请释放内存之类的,造成不少冗余代码,这个不算是错误问题。

【数据结构】线性表(包括有序表)在顺序表和链表上的插入、删除、逆置操作算法

1)初始化指针p和q,分别指向链表中相邻的两个元素;

2)当p-next不为空时,做如下处理:

①若相邻两元素不相等时,p和q都向后推一步;

②否则,当相邻元素相等时,删除多余元素。

【算法源代码】

void Delete_Equal(LinkList *L)

{ p=(*L)-next;q=p-next; /*p和q指向相邻的两个元素*/

 while(p-next)

{ if(p-data!=q-data) /*若相邻两元素不相等时,p和q都向后推一步*/

{ p=p-next; q=p-next; }

else

{ while(q-data==p-data) /*当相邻元素相等时删除多余元素*/

 { r=q;

 q=q-next;

 free(r);

 }

p-next=q;p=q;q=p-next;

}/*else*/

}/*while*/

}/*Delete_Equal */

试设计一个算法,对带头结点的单链表实现就地逆置。

【算法分析】

1)空表或长度为1的表,不做任何处理;

2)表长大于2时,做如下处理:

①首先将整个链表一分为二,即从链表的第一元素结点处断开;

②逐个地把剩余链表的当前元素q插入到链表的头部。

【算法源代码】

void LinkList_reverse(LinkList L)

{ if(!L-next||!L-next-next) return;

 p=L-next; q=p-next; s=q-next; p-next=NULL; /*从链表的第一元素结点处断开*/

 while(s-next)

{q-next=p;p=q;

 q=s;s=s-next; /*把L的元素逐个插入新表表头*/

}

 q-next=p;s-next=q;L-next=s;

}/*LinkList_reverse*/

队列元素逆置(JAVA语言)求程序解答

请问你的队列和栈数据结构实现了没?如果实现了就只看main方法吧

//MyStack.java

import java.util.LinkedList;

public class MyStack {

LinkedList linkList = new LinkedListObject();

public void push(Object object) {

linkList.addFirst(object);

}

public boolean isEmpty() {

return linkList.isEmpty();

}

public Object pop() {

if (!linkList.isEmpty())

return linkList.removeFirst();

return "栈内无元素";

}

}

//MyQueue.java

public class MyQueue {

LinkedList linkedList = new LinkedList();

public void put(Object o){

linkedList.addLast(o);

}

public Object get(){

if(!linkedList.isEmpty())

return linkedList.removeFirst();

return "";

}

public boolean isEmpty(){

return linkedList.isEmpty();

}

}

//test.java

public class test{

public static void main(String[] args) {

MyStack ms = new MyStack();

MyQueue mq = new MyQueue();

mq.put(1);

mq.put(2);

mq.put(3);

while(!mq.isEmpty()){

ms.push(mq.get());

}

while(!ms.isEmpty()){

mq.put(ms.pop());

}

while(!mq.isEmpty()){

System.out.print(mq.get());

}

}

}

程序输入是1 2 3,输出是3 2 1


网页标题:数据结构java逆置代码 数据结构java逆置代码是什么
文章源于:http://scjbc.cn/article/dossijo.html

其他资讯