#includetypedef int elemtype;
typedef struct lnodelnode, *linklist;
//初始化鍊錶,尾插法建立乙個單鏈表
void creatlist(linklist *l)
r->next = null;
}//按序號查詢結點值
int getelem(linklist l,int i)
while(p&&jnext;
j++;
}printf("序號%d的值為:%d",i,p->data);
}//按值查詢結點
int locateelem(linklist l,elemtype e)
printf("值為%d的序號為:%d",e,i);
}//指定位置插入元素
int listinsert(linklist l,int i,elemtype e)
while(p&&jnext;
j++;
}lnode *s = (linklist)malloc(sizeof(lnode));
s->data = e;
s->next = p->next;
p->next = s;
return;
}//指定位置刪除元素
int listdelete(linklist l,int i)
while(p&&jnext;
j++;
}lnode *q = p->next;
p->next = q->next;
free(q);
return 1;
}//鍊錶列印
int printlist(linklist l)
if(i == 0)
return 1;
}//刪除鍊錶
int clearlist(linklist l)
l->next = null;
return 1;
}int main()
鏈式儲存的引入:
順序表插入、刪除的操作需要移動大量元素,影響執行效率,由此引入線性表的鏈式儲存;鏈式儲存線性表時,不需要使用位址連續的儲存單元,即不要求邏輯上相鄰的元素在物理儲存上也相鄰,通過「鏈」建立起資料元素之間的邏輯關係,因此,對線性表的插入、刪除不需要移動元素,只需要修改指標。
單鏈表:
單鏈表通過一組任意的儲存單元來儲存線性表中的資料元素;為了建立資料元素之間的線性關係,對每個鍊錶結點,除了存放元素自身的資訊之外,還需要存放乙個指向後繼的指標。結構特點為 data:資料域 ,存放資料元素 next:指標域,存放其後繼結點的位址。
引入頭結點:
單鏈表中,通常用「頭指標」標識乙個單鏈表,如單鏈表l,頭指標為「null」時表示乙個空表;此外,引入頭結點(在單鏈表第乙個結點之前附加乙個結點),指標域指向線性表的第乙個元素結點。
引入頭結點的優點:
1.由於開始結點的位置被存放在頭結點的指標域中,所以在鍊錶的第乙個位置上的操作和表的其他位置上的操作一致,無法進行特殊處理。
2.無論鍊錶是否為空,其頭指標是指向頭結點的非空指標(空表中頭結點的指標域為空),此空表和非空表的處理也就統一了。
單鏈表基本操作的實現
package pac1 class node public void show public class linklist 插入乙個頭結點 public void addheadnode int data 頭插法建立表,將新節點插入到頭結點之後 public void creatlist1 lin...
單鏈表基本操作java實現
閒來無事,寫個資料結構鍊錶的實現 如下 package com.data structs class link class linklist 在表頭插入新的資料 public void insertfirst e value 判斷鍊錶是否為空 public boolean isempty 刪除表頭 ...
C 實現單鏈表的基本操作
結點類 關鍵處在c語言中用指標來指向下乙個節點,c 是物件導向的,用節點類的乙個屬性 next屬性 來指向下乙個節點物件 public class linknode set private linknodenext public linknodenext set endregion public l...