鏈式的線性表適用於經常進行刪除,插入操作的工作,如:訂票系統。
鍊錶是用乙個乙個的節點連線起來的表,在物理上不是連續的,在邏輯上是連續的。通過節點間的指標指向來表示節點間的關係。
所以在進行鍊錶操作之前,要先定義乙個節點結構。節點結構包含兩個東西:資料域,指標域。資料域就是用來存放資料的,指標域是用來表示節點間的關係。
第一步:定義鍊錶節點
struct node
;
定義好了節點之後,接下來就是定義鍊錶初始化的方法。
第二步:初始化鍊錶
struct node *listinit()
head->pnext =null;
return head;
}
第三步:檢視鍊錶長度
int listlen(struct node *list)
return count;
}
第四步:新增元素,因為鍊錶的空間是動態分配,所以不存在滿的情況,不用判滿。
int listadd(struct node *list,int elem)
new->date = elem;
new->pnext = list->pnext;
list->pnext = new;
return 1;
}
第五步:刪除元素,要判空
int listempty(struct node *list)
然後定義刪除元素的方法
int listdel(struct node *list, int pos)
if (pos<1 || pos > listlen(list))
while (i!=pos)
temp->pnext = p->pnext;
free(p);
return 1;
}
第六步:插入元素。
int listinsert(struct node *list,int pos,int elem)
while(i < pos)
struct node *new = (struct node *)malloc(sizeof(struct node));
if(null == new)
new->date = elem;
new->pnext = temp->pnext;
temp->pnext = new;
return 1;
}
第七步:遍歷表,輸出資訊。
void listdisplay(struct node *list)
}
第九步:查詢元素。
int listfind(struct node *list,int elem)
while(null != temp)
temp = temp->pnext;
i++;
}return 0;
}
鍊錶其實很好理解,前提是要學會並理解指標,若看不懂的可先去學習下指標。
線性表之鍊錶
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 ...
線性表之鍊錶
1 實驗專案一 線性表的基本操作及其應用 兩次實驗課完成 definition of sequential list typedef struct sqlist definition of linked list typedef struct lnodelnode,linklist 實驗要求 1 程...