歡迎關注,大家共同學習!
鏈式儲存:用一組任意的儲存單元儲存線性表中的元素;
特點:(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 ...