由於鍊錶的描述比較複雜,故此處僅貼出**,並附上本人遇到的部分問題,以供學習參考之用。
#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...