1. 鍊錶建立操作的基本步驟:鍊錶是乙個動態的結構,它不需要分配空間,因此建立鍊錶的過程是乙個結點「逐個插入」 的過程。先建立乙個只含頭結點的空單鏈表,然後依次生成新結點,再不斷地將其插入到鍊錶的頭部或尾部,分別稱其為「頭插法」和「尾插法」。
2. 鍊錶查詢操作的基本步驟:因煉表是一種"順序訪問"的結構,則要在帶頭結點的鍊錶中查詢到第 i個元素,必須從頭結點開始沿著後繼指標依次"點數",直到點到第 i 個結點為止,如果查詢成功,則用e返回第i個元素值。頭結點可看成是第0個結點。
3. 鍊錶插入操作的基本步驟:先確定要插入的位置,如果插入位置合法,則再生成新的結點,最後通過修改鏈將新結點插入到指定的位置上。
4. 鍊錶刪除操作的基本步驟:先確定要刪除的結點位置,如果位置合法,則再通過修改鏈使被刪結點從鍊錶中「卸下」,最後釋放被刪結點的空間。
單鏈表的儲存結構描述如下:
typedef
struct lnode //定義單鏈表結點型別
linklist;
初始化鍊錶:
void
initlist
(linklist *
&l)
銷毀線性表:
void
destroylist
(linklist *
&l)//銷毀線性表
free
(p);
}
判斷是否為空表:
bool listempty
(linklist *l)
//判線性表是否為空表
求線性表長度:
int
listlength
(linklist *l)
//求線性表的長度
return
(i);
}
輸出線性表:
void
displist
(linklist *l)
//輸出線性表
printf
("\n");
}
求線性表某個資料元素值:
bool getelem
(linklist *l,
int i,elemtype &e)
//求線性表中某個資料元素值
if(p==
null
)//不存在第i個資料節點,返回0
return false;
else
//存在第i個資料節點,返回1
}
按元素值查詢:
int
locateelem
(linklist *l,elemtype e)
//按元素值查詢
if(p==
null
)//不存在元素值為e的節點,返回0
return(0
);else
//存在元素值為e的節點,返回其邏輯序號i
return
(i);
}
鍊錶的插入:
bool listinsert
(linklist *
&l,int i,elemtype e)
//插入資料元素
if(p==
null
)//未找到第i-1個節點,返回false
return false;
else
//找到第i-1個節點*p,插入新節點並返回1
}
線性表的刪除:
bool listdelete
(linklist *
&l,int i,elemtype &e)
//刪除資料元素
if(p==
null
)//未找到第i-1個節點,返回false
return false;
else
//找到第i-1個節點*p
}
編寫乙個程式,實現單鏈表的各種基本運算(假設單鏈表的元素型別為char),並在此基礎上設計乙個主程式完成如下功能:
(1)初始化單鏈表h;
(2)依次採用尾插法插入a、b、c、d、e元素;
(3)輸出單鏈表h;
(4)輸出單鏈表h的長度;
(5)判斷單鏈表h是否為空;
(6)輸出單鏈表h的第3個元素;
(7)輸出元素a的位置
(8)在第4個元素位置上插入f元素
(9)輸出單鏈表h;
(10)刪除h的第3個元素;
(11)輸出單鏈表h;
(12)釋放單鏈表h。
typedef
int elemtype;
typedef
struct node book,
*booklist;
typedef
struct lnode linklist;
void
initlist
(linklist*
&l)void
destorylist
(linklist*
&l)free
(p);
}bool listempty
(linklist*l)
intlistlength
(linklist*l)
return
(i);
}void
displist
(linklist*l)
printf
("\n");
}bool getelem
(linklist*l,
int i, elemtype &e)
if(p ==
null
)return false;
else
}int
locateelem
(linklist*l, elemtype e)
if(p ==
null
)return(0
);else
}bool listinsert
(linklist*l,
int i, elemtype e)
if(p ==
null
)return false;
else
}bool listdelete
(linklist*
&l,int i, elemtype&e)
if(p ==
null
)return false;
else
}int
main()
大一新生必看,自學必看,里昂詳解資料結構之線性表
1 順序表插入操作的基本步驟 要在順序表中第 i 個資料元素之前插入一 個資料元素 x,首先要判斷插入位置 i 是否合法,假設線性表的長為 n,則 i 的 合法值範圍 1 i n 1,若是合法位置,就再判斷順序表否滿,如果滿,則增 加空間或結束操作,如果不滿,則將第 i 個資料元素及其之後的所有資料...
大一新生必看,自學必看,里昂詳解資料結構之堆疊
堆疊,一種先進後出的線性表。僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。順序棧結...
大一新生該學的
看到老師讓給新入學學弟們點經驗。1.別為了適用而學習。因為你暫時還不知道你以後的職業,還不能規劃自己的職業道路。所以一定要面廣,也不要太鑽研,已理解和了解為主。2.鍛鍊自己的能力,提高個人素質。這是你終身適用的。在以後的道理中,你更主要的是跟人在打交道。3.經歷大學該經歷的。去看看10個或100大學...