成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

數(shù)據(jù)結(jié)構(gòu)java逆置代碼 數(shù)據(jù)結(jié)構(gòu)java逆置代碼是什么

數(shù)據(jù)結(jié)構(gòu)單鏈表逆置求詳細(xì)解答

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

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

//這是有表頭結(jié)點(diǎn)鏈表的逆置

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

return;

struct node *p = head-next, *pnext = NULL;//p是鏈表當(dāng)前結(jié)點(diǎn),pnext指向p的后繼結(jié)點(diǎn)

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

while (p != NULL)

{//如果后面鏈表中還有結(jié)點(diǎn)

pnext = p-next;//pnext暫存當(dāng)前結(jié)點(diǎn)后繼結(jié)點(diǎn)的指針

p-next = head-next;//將后面鏈表的第一個(gè)結(jié)點(diǎn)插入在前面鏈表的頭部

head-next = p;

p = pnext;// p重新指向后面鏈表的第一結(jié)點(diǎn)

}

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

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

#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;

//因?yàn)橛昧祟^插法放入數(shù)據(jù)所以輸出的應(yīng)與輸入的相同

int

x;

m=p;

p=NULL;

int

j;

while(m!=NULL)

{

node

*n=m-next;

m-next=p;

p=m;

m=n;

}

cout"逆置鏈表后的結(jié)果:";

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

{

x=p-data;

coutx;

p=p-next;

}

}

void

main()

{

int

i;

int

a[4];

cout"please

inpute

data(4個(gè)數(shù)):\n";

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

cina[i];

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

ins(a[i]);

rev(i);

}

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

錯(cuò)誤原因:

1)題目要求“建立長(zhǎng)度為n的順序表”,這個(gè)是要?jiǎng)討B(tài)申請(qǐng)內(nèi)存的,不能使用預(yù)先定大小的char data[100];代替,因?yàn)榧尤朐貍€(gè)數(shù)大于100,這個(gè)大小已知的數(shù)組就會(huì)越界,這是錯(cuò)誤一。

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

附加:程序代碼不精簡(jiǎn),不需要用鏈表申請(qǐng)釋放內(nèi)存之類的,造成不少冗余代碼,這個(gè)不算是錯(cuò)誤問題。

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

1)初始化指針p和q,分別指向鏈表中相鄰的兩個(gè)元素;

2)當(dāng)p-next不為空時(shí),做如下處理:

①若相鄰兩元素不相等時(shí),p和q都向后推一步;

②否則,當(dāng)相鄰元素相等時(shí),刪除多余元素。

【算法源代碼】

void Delete_Equal(LinkList *L)

{ p=(*L)-next;q=p-next; /*p和q指向相鄰的兩個(gè)元素*/

 while(p-next)

{ if(p-data!=q-data) /*若相鄰兩元素不相等時(shí),p和q都向后推一步*/

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

else

{ while(q-data==p-data) /*當(dāng)相鄰元素相等時(shí)刪除多余元素*/

 { r=q;

 q=q-next;

 free(r);

 }

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

}/*else*/

}/*while*/

}/*Delete_Equal */

試設(shè)計(jì)一個(gè)算法,對(duì)帶頭結(jié)點(diǎn)的單鏈表實(shí)現(xiàn)就地逆置。

【算法分析】

1)空表或長(zhǎng)度為1的表,不做任何處理;

2)表長(zhǎng)大于2時(shí),做如下處理:

①首先將整個(gè)鏈表一分為二,即從鏈表的第一元素結(jié)點(diǎn)處斷開;

②逐個(gè)地把剩余鏈表的當(dāng)前元素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; /*從鏈表的第一元素結(jié)點(diǎn)處斷開*/

 while(s-next)

{q-next=p;p=q;

 q=s;s=s-next; /*把L的元素逐個(gè)插入新表表頭*/

}

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

}/*LinkList_reverse*/

隊(duì)列元素逆置(JAVA語言)求程序解答

請(qǐng)問你的隊(duì)列和棧數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)了沒?如果實(shí)現(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 "棧內(nèi)無元素";

}

}

//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ù)結(jié)構(gòu)java逆置代碼 數(shù)據(jù)結(jié)構(gòu)java逆置代碼是什么
轉(zhuǎn)載注明:http://jinyejixie.com/article20/dossijo.html

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

廣告

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

成都定制網(wǎng)站建設(shè)
滨州市| 新宁县| 靖州| 湖北省| 疏勒县| 定南县| 雅安市| 安图县| 保定市| 科尔| 措勤县| 刚察县| 邓州市| 建德市| 山西省| 巧家县| 宣化县| 沂南县| 沧源| 潮州市| 阿鲁科尔沁旗| 龙山县| 大港区| 聊城市| 崇阳县| 鲁甸县| 福泉市| 昭苏县| 北辰区| 屯昌县| 思南县| 武隆县| 瓮安县| 红安县| 汶上县| 齐齐哈尔市| 呈贡县| 米林县| 灵宝市| 常州市| 延庆县|