第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

線性表-雙鏈表

#ifndef List_hpp

#define List_hpp


#include <stdio.h>

#include <iostream>

#include "string"

#include <iostream>

#include "Node.hpp"

?

/**

下面實(shí)現(xiàn)的是 線性表-單鏈表

*/

using namespace std;

template <typename? T>

class List{

public:

? ? List(int size=1);

? ? ~List();

?

? ? void clearList();

? ? bool listEmpty();

? ? int listLength();

? ? int locateElem(T *e);

? ? bool priorElem(T *currentElem,T *preElem);

? ? bool nextElem(T *currentElem,T *nextElem);

? ? bool listInsert(int i,T *e);

? ? bool listDelete(int i,T *e);

? ? bool listInsertHead(T *t);

? ? bool listInsertTail(T *t);

? ? void listTraverse();

?? ?

private:

? ? Node<T> *get(int i);

??

? ? Node<T> *getFirst();

? ? Node<T> *m_Plist;

? ? int m_iLength;

?? ?

};




/**

?下面實(shí)現(xiàn)的是 線性表-單鏈表

?*/

template <typename? T>

List<T>::List(int size){

?? ?

? ? m_Plist = new Node<T>();

? ? m_iLength = 0;

}


template <typename? T>

List<T>::~List()

{

? ? clearList();

}


?


template <typename? T>

void List<T>::clearList(){

? ?

? ? Node<T> *n = getFirst();

?? ?

? ? while (n != NULL) {

? ? ? ? Node<T> *temp = n->next;

? ? ? ? delete n;

? ? ? ? n = temp;

?? }

? ? m_iLength = 0;

? ? m_Plist->next = NULL;

}


template <typename? T>

bool List<T>::listEmpty(){

? ? return m_iLength == 0;

}


template <typename? T>

int List<T>::listLength(){

? ? return m_iLength;

}



template <typename? T>

Node<T> *List<T>::getFirst(){

? ?

? ? Node<T> *c = m_Plist;

? ? while (c->previous !=NULL) {

? ? ? ? c = c->previous;

? ? }

? ? return c;

}


template <typename? T>

Node<T> *List<T>::get(int i){

?? ?

? ? if(i<0 || i>m_iLength){

?? ? ? ? return NULL;

? ? }

?? ?

? ? Node<T> *currentNode = getFirst();

? ? for(int k=0;k<i;k++){

?? ? ? currentNode = currentNode->next;

? ? }

? ? return currentNode;

}



?


template <typename? T>

int List<T>::locateElem(T *e){

?? ?

?? ?

?? ? Node<T> *currentNode = getFirst();

?? ? for(int k=0;k<m_iLength;k++){

? ? ? ? ?

?? ? ? ? if(currentNode->data == *e){

?? ? ? ? ? ? return k;

?? ? ? ? }

?? ? ? ? currentNode = currentNode->next;

?? ? }

?? ?

? ? return -1;

?? ?

}


template <typename? T>

bool? List<T>::priorElem(T *currentElem,T *preElem){

??

? ? int i = locateElem(currentElem);

?? ?

? ? if(i == -1){

? ? ? ? return false;

? ? }

? ? if(i == 0){

? ? ? ? return false;

? ? }

??

? ? Node<T> *t = get(i);

? ? ?

? ? *preElem? = t->previous->data;

? ? return true;

}



template <typename? T>

bool List<T>::nextElem(T *currentElem,T *nextElem){

?? ?

? ? ? int i = locateElem(currentElem);

?? ? ?

? ? ? if(i == -1){

? ? ? ? ? return false;

? ? ? }

?? ? ?

?? ?

?? ? Node<T> *t = get(i);

?? ? *nextElem = t->next->data;

? ? return true;

}



template <typename T>

bool List<T>::listInsert(int i, T *e){

??

? ? // 根據(jù) i 找數(shù)據(jù),然后操作 get(i)

? ? ?

? ? if(i<0 || i> m_iLength){

? ? ? ? return false;

? ? }

?? ?

?? ?

? ? if(i == 1){

? ? ? ? cout << " "? <<endl;

? ? }

?? ?

? ? // 獲取指定元素的上一個(gè),用來(lái)替換或者新增 i 節(jié)點(diǎn)數(shù)據(jù)

?? ?

? ? i = i-1<=0?0:i-1;

?? ?

? ? Node<T> *currentNode = get(i);

?

?? ?

? ? // 第一個(gè)元素(初始化使用)

? ? if(m_iLength == 0){

? ? ? ? ?

?? ? ? ? m_Plist->data=*e;

?? ? ? ? m_Plist->next=NULL;

?? ? ? ? m_Plist->previous=NULL;

?? ? ? ? m_iLength++;

?? ? ? ? return true;

? ? }

?? ?

? ? // 第一個(gè)元素 (插入頭使用)

? ? if(i == 0 && m_iLength > 0){

?? ? ? ? Node<T> *newNode = new Node<T>();

?? ? ? ? newNode->data=*e;

?? ? ? ? newNode->next = currentNode;

?? ? ? ? newNode->previous = currentNode->previous;

? ? ? ? currentNode->previous = newNode;

?? ? ? ? m_iLength++;

?? ? ? ? return true;

? ? }

?? ?

?? ?

? ? Node<T> *newNode = new Node<T>();

? ? newNode->data=*e;

? ? newNode->next=currentNode->next;

? ? newNode->previous = currentNode;

? ? currentNode->next = newNode;

?? ?

??

?? ?

?? ?

? ? m_iLength++;

? ? return true;

}



template <typename T>

bool List<T>::listDelete(int i, T *e){

?? ?

? if(i<0 || i>=m_iLength){

?? ? ? return false;

?? }

?? ?

?? ?

? ? Node<T> *currentNode = get(1);

?? ?

? ? currentNode->previous->next = currentNode->next;

?? ?

? ? *e = currentNode->data;

? ? delete currentNode;

? ? currentNode = NULL;

? ?

? ? m_iLength--;

? ? ?

? ? return true;

}

template <typename T>

bool List<T>::listInsertHead(T *t){


?? return? listInsert(0,t);

? ?

}


template <typename T>

bool List<T>::listInsertTail(T *t){

? ?

?? return? listInsert(m_iLength,t);

??

}



template <typename T>

void List<T>::listTraverse(){

?

? ? cout << "m_iLength" << m_iLength << endl;

? ? Node<T> *currentNode = getFirst();

? ? while (currentNode != NULL) {

?? ? ? ?

? ? ? ? currentNode->printNode();

?? ? ? ?

? ? ? ? currentNode = currentNode->next;

? ? }

?? ?

}

template?<typename??T>class?Node{public:????Node(){????????cout?<<?"Node()"?<<?endl;????}????T?data;????Node?*previous;?//?前????Node?*next;?//?后????void?printNode();????};template?<typename??T>void?Node<T>::printNode(){????cout?<<?data?<<?endl;}


正在回答

1 回答

能不能問(wèn)題寫(xiě)清楚點(diǎn),然后掛個(gè)CSDN的代碼鏈接,我好下去調(diào)試看看。這么一堆,讓人怎么看。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
數(shù)據(jù)結(jié)構(gòu)探險(xiǎn)之線性表篇
  • 參與學(xué)習(xí)       57609    人
  • 解答問(wèn)題       264    個(gè)

線性表的主體順序表和鏈表,讓學(xué)員能夠?qū)⒅R(shí)融會(huì)貫通學(xué)以致用

進(jìn)入課程
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)