鍊錶的定義及其基本運算

2022-05-05 23:54:13 字數 1595 閱讀 3443

由於鍊錶的描述比較複雜,故此處僅貼出**,並附上本人遇到的部分問題,以供學習參考之用。

#include

using

namespace

std;

typedef

struct tagnodenode;

/*該結點可看成是**存放了數值域data和指標域next的遞迴定義的指標**

原來的結點宣告報錯。

出錯原因為:typedef相當於為struct結構宣告了乙個新的名字,如:typedef int int;則可令int = 4;

而此**並未給新的名字「賦值」。最讓人無法忍受的事情是,此**系本人教材原始碼,坑人!在新的宣告中,

typedef structnode;

*/class

list

void create_r();

void printlist();

private:

int count;

node* head; //宣告頭結點

};list::list()

intlist::length() //另一簡單的做法為:return count;

return i;

}int

list::get_element(int i,int& x) //取得i號元素的值,並放入x中

if(p == null)

return -1;

x = p -> data;

return0;}

node* list::locate(int x) //將指標作為返回型別

return null;

}void

list::insert(int i,int x) //呼叫該函式無法執行,懷疑是記憶體分配問題,但不知道如何修改

if(i < 1 || i > count + 1)

return ;

node* s = new node;

s -> data = x;

s -> next = p -> next;

p -> next = s;

count ++;

}int

list::delete_element(int i)//與上一函式問題相同

if(i < 1 || i > count + 1)

return -1;

node* u = new node;

u = p -> next;

p -> next = u -> next;

delete u;

count --;

return0;}

list::~list() //釋放指標

void

list::create_r() //尾插法建立鍊錶

s -> data = x;

rear -> next = s;

rear = s;

rear -> next = null;

cin>>x;

}}void

list::printlist()

cout

鍊錶的定義及其基本運算

include using namespace std typedef struct tagnodenode 該結點可看成是 存放了數值域data和指標域next的遞迴定義的指標 原來的結點宣告報錯。出錯原因為 typedef相當於為struct結構宣告了乙個新的名字,如 typedef int i...

棧的定義及其基本運算

基本定義 棧 stack 是n個元素a1,a2,an,組成的有限序列,記作s a1,a2,an 並且只能在一端插入和刪除元素,n 0時稱為空棧。棧的特徵 由於棧只能從一端插入和刪除元素,故棧具有後進先出 last in,first out,lifo 的特性。稱插入和刪除的一端為棧頂 top 另一端為...

鍊錶的定義及其簡單解釋

鍊錶 1.儲存方式 1 順序儲存 以連續的儲存單元進行儲存 2 鏈式儲存 儲存單元不聯絡 2.鏈式儲存 1 不可計算儲存單元的位址,只能以儲存的形式來完成 2 結構 結點的結構 資料域 data 指標域 next 資料域 儲存本結點的資料 定義 struct node 型別重新命名 a.struct...