眾所周知,線性表是資料結構中的一種基本的資料結構。線性表的實現基本的有兩種:一種是順序儲存方式,另一種是鏈式儲存方式。
順序儲存的線性表又叫順序表,實現時一般利用陣列等在記憶體中連續儲存的這個資料型別,所以順序表是一種隨機訪問的資料結構。順序表的優點是:可以快速訪問任一
位置的元素;並且無需為表示元素間的邏輯關係增加額外的儲存空間。順序表的缺點是:插入和刪除操作需要移動大量的元素;當線性表的長度變化較大時,無法確定儲存空間
容量;易造成儲存空間「碎片」。
為了克服克服順序表的上述缺點,先輩們又創造了線性表的另外一種實現方式:鏈式儲存。鏈式儲存,需要額外的儲存空間來儲存節點之間的邏輯關係,並且無法實現隨機
訪問,但是在插入刪除時無需再移動元素,只需要申請乙個節點的空間,並把這個節點鏈結到原有的鍊錶中。常見的鍊錶有:單鏈表、迴圈鍊錶(尾指標指向頭節點)、雙向鏈
表(每個節點儲存前向指標和後向指標)、靜態鍊錶(利用陣列描述,其中陣列首元素儲存備用鍊錶的首節點,陣列尾元素儲存占用鍊錶的首節點)。
簡單單鏈表的c++實現如下:
#includeusing namespace std;
typedef int elemtype;
struct node;
class listlink
;inline listlink::listlink()
inline listlink::~listlink()
}bool listlink::elemget(int i,elemtype *e)
if(!(p->next) || j>i)
return false;
*e = p->next->data;
return true;
}bool listlink::listinsert(int i,elemtype e)
if(!p || j>i)
return false;
node *s = new node();
s->data = e;
s->next = p->next;
p->next = s;
return true;
}bool listlink::listdelete(int i,elemtype *e)
if(!(p->next) || j>i)
return false;
node *s = p->next;
p->next = s->next;
*e = s->data;
delete s;
return true;
}void listlink::listprint()
coutl->listprint();
char quit = 'n';
while(quit!='y')
return 0;
}
資料結構之單鏈表
date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...
資料結構之單鏈表
鍊錶 儲存結構的一種,包含兩個部分,資料域和指標域,相對於順序儲存結構來說,插入和刪除的演算法時間複雜度只為o 1 定義 定義 typedef struct node linklist linklist,指標指向每乙個元素 typedef struct nodenode 以下為簡單的c語言實現 in...
資料結構之單鏈表
由於順序表再插入或者刪除時需要移動大量資料,並且如果表比較大,會比較難分配連續的儲存空間導致儲存資料失敗。因此可以採用鍊錶結構,鍊錶結構是一種動態儲存分配的結構形式,可以根據需要動態的申請所需的儲存單元。鍊錶又分為單鏈表,雙向鍊錶,以及單迴圈鍊錶,多重鏈的迴圈鍊錶。本文先介紹單鏈表。典型的單鏈表結構...