數(shù)據(jù)結構java逆置代碼 數(shù)據(jù)結構java逆置代碼是什么

數(shù)據(jù)結構單鏈表逆置求詳細解答

算法利用的是鏈表的頭插入法,結果是與插入次序正好顛倒

成都創(chuàng)新互聯(lián)公司是少有的成都網(wǎng)站建設、做網(wǎng)站、營銷型企業(yè)網(wǎng)站、小程序開發(fā)、手機APP,開發(fā)、制作、設計、賣鏈接、推廣優(yōu)化一站式服務網(wǎng)絡公司,從2013年成立,堅持透明化,價格低,無套路經(jīng)營理念。讓網(wǎng)頁驚喜每一位訪客多年來深受用戶好評

//這是有表頭結點鏈表的逆置

if (head == NULL)//鏈表為空就退出

return;

struct node *p = head-next, *pnext = NULL;//p是鏈表當前結點,pnext指向p的后繼結點

head-next = NULL;//斷開表頭結點和后面鏈表結點的聯(lián)系

while (p != NULL)

{//如果后面鏈表中還有結點

pnext = p-next;//pnext暫存當前結點后繼結點的指針

p-next = head-next;//將后面鏈表的第一個結點插入在前面鏈表的頭部

head-next = p;

p = pnext;// p重新指向后面鏈表的第一結點

}

用數(shù)據(jù)結構中的單鏈表求逆置的編程

用數(shù)據(jù)結構中的單鏈表求逆置的編程:

#include"iostream"

using

namespace

std;

struct

node{

int

data;

node

*next;

};

node

*p=NULL;

void

ins(int

x)

//將輸入的數(shù)采用頭插法放入鏈表中

{

node

*q=new

node;

q-data=x;

q-next=p;

p=q;

}

void

rev(int

i)

//將鏈表逆置并輸出

{

node

*m;

//因為用了頭插法放入數(shù)據(jù)所以輸出的應與輸入的相同

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個數(shù)):\n";

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

cina[i];

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

ins(a[i]);

rev(i);

}

數(shù)據(jù)結構逆置順序表,不知道哪里錯了,結果正確,交上去是錯的

錯誤原因:

1)題目要求“建立長度為n的順序表”,這個是要動態(tài)申請內存的,不能使用預先定大小的char data[100];代替,因為加入元素個數(shù)大于100,這個大小已知的數(shù)組就會越界,這是錯誤一。

2)您代碼中輸入的變量m是順序表長度,而卻要輸入2*m的字符,雖然后面只放入了m個字符給a數(shù)組,但是與題目要求不符合,這是錯誤二。

附加:程序代碼不精簡,不需要用鏈表申請釋放內存之類的,造成不少冗余代碼,這個不算是錯誤問題。

【數(shù)據(jù)結構】線性表(包括有序表)在順序表和鏈表上的插入、刪除、逆置操作算法

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 */

試設計一個算法,對帶頭結點的單鏈表實現(xiàn)就地逆置。

【算法分析】

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語言)求程序解答

請問你的隊列和棧數(shù)據(jù)結構實現(xiàn)了沒?如果實現(xiàn)了就只看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

本文名稱:數(shù)據(jù)結構java逆置代碼 數(shù)據(jù)結構java逆置代碼是什么
轉載注明:http://muchs.cn/article20/dossijo.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、App開發(fā)、網(wǎng)站制作、標簽優(yōu)化企業(yè)建站、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設