線性表之基於鍊錶的實現

2021-08-09 23:34:05 字數 2189 閱讀 9509

歡迎關注,大家共同學習!

鏈式儲存:用一組任意的儲存單元儲存線性表中的元素;

特點:(1)儲存單元可以是連續的,也可以是零散的;

(2)鍊錶中結點的物理順序和邏輯順序不一定相同。

由於儲存單元不一定是連續的,為了正確的表示結點之間的邏輯關係,每個結點除了儲存資料資訊外,還需要儲存結點的直接後繼結點的位址,我們稱之為鏈或指標。

1、結點的定義:

typedef struct lnode

lnode;

2、初始化

int linklist_init(lnode *head)

3、表的插入操作

int linklist_insert(lnode *head,int i,elemtype e)

q=(lnode *)malloc(sizeof(lnode));

q->data=e;

pre->next=q;

q->next=p;

return ok;

}

4、表的刪除操作

int linklist_delete(lnode *head,int i,elemtype *x)

*x=p->data;

pre->next=p->next;

return ok;

}

5、獲取表的長度

int linklist_getlength(lnode *head)

return counter;

}

6、獲取表尾元素

int linklist_getlastdata(lnode *head)

temp=p->data;

return temp;

}

7、列印元素

int linklist_print(lnode *head)

return ok;

}

關於鏈式儲存結構的線性表結構的定義和全部操作就是上述這些,最後給出全部測試**:

#include #include#define ok 1

#define error -1

typedef int elemtype;

using namespace std;

//typedef struct lnode

lnode;

//int linklist_init(lnode *head)

//int linklist_getlength(lnode *head)

return counter;

}//insert

int linklist_insert(lnode *head,int i,elemtype e)

q=(lnode *)malloc(sizeof(lnode));

q->data=e;

pre->next=q;

q->next=p;

return ok;}//

int linklist_delete(lnode *head,int i,elemtype *x)

*x=p->data;

pre->next=p->next;

return ok;}//

int linklist_getlastdata(lnode *head)

temp=p->data;

return temp;

}int linklist_print(lnode *head)

return ok;

}int main()

{ lnode *head;

elemtype x_delete;

head=(lnode *)malloc(sizeof(lnode));

linklist_init(head);

for(int i=0;i<10;i++)

linklist_insert(head,i+1,i);

linklist_print(head);

linklist_delete(head,5,&x_delete);

cout<<"刪除的元素:"<

線性表之鍊錶

鏈式的線性表適用於經常進行刪除,插入操作的工作,如 訂票系統。鍊錶是用乙個乙個的節點連線起來的表,在物理上不是連續的,在邏輯上是連續的。通過節點間的指標指向來表示節點間的關係。所以在進行鍊錶操作之前,要先定義乙個節點結構。節點結構包含兩個東西 資料域,指標域。資料域就是用來存放資料的,指標域是用來表...

線性表之鍊錶

1,為什麼要使用鍊錶 1,順序表的長度是固定的,如果超出分配的長度就會造成溢位,如果存放的資料太少則會造成空間浪費。2,在插入元素和刪除元素時 尤其不在尾部時 會移動大量的元素,造成效能和效率低下。基於以上問題,使用鍊錶可以很好地避免順序表中出現的問題。這也是我們要使用鍊錶的原因。2,鍊錶的儲存結構...

線性表之鍊錶

1.初始化 void initlist list plist assert plist null if plist null plist data 不使用 plist next null 2.頭插 bool insert head list plist,int val 時間複雜度為o 1 node ...