線性表的鏈式儲存結構的特點是用一組任意的儲存單元儲存線性表的資料元素(這組儲存單元可以是連續的,也可以是不連續的)。因此,為了表示每個資料元素與其直接後繼資料元素之間的邏輯關係,對資料元素來說,除了儲存其本身的資訊之外,還需儲存乙個指示其直接後繼的資訊(即直接後繼的儲存位置)。這兩部分資訊組成資料元素的儲存映像,稱為結點(node)。它包括兩個城: 其中儲存資料元素資訊的域稱為資料域: 儲存直接後繼儲存位置的域稱為指標域: 指標域中儲存的資訊稱做指標或鏈。n個結點鏈結成乙個鍊錶,即為線性表的鏈式儲存結構。又由於此鍊錶的每個結點中只包含乙個指標域,故又稱線性鍊錶或單鏈表。
標頭檔案slist:
#include
#include
#include
#include
typedef
int datatype;
typedef
struct slistnode
slistnode;
slistnode* buyslistnode(datatype x);//建立新的節點
void slistprint(slistnode* phead);//列印
void slistdestory(slistnode** pphead);//銷毀
void slistpushback(slistnode** pphead, datatype x);//尾插
void slistpopback(slistnode** pphead);//尾刪
void slistpushfront(slistnode** pphead, datatype x);//頭插
slistnode* slistfind(slistnode* phead, datatype x);//尋找x 返回位址
void slistinsest(slistnode** pphead, slistnode* pos, datatype x);//指定插入
void slisterase(slistnode** pphead, slistnode* pos);//指定刪除
函式實現:
#define _crt_secure_no_warnings 1
#include
"slist.h"
slistnode* buyslistnode(datatype x)
newnode->_data = x;
newnode->_next =
null;
return newnode;
}void slistprint(slistnode* phead)
while (phead)
printf("null");
printf("\n");
}void slistdestory(slistnode** pphead)
while (next)
*pphead =
null;
}void slistpushback(slistnode** pphead, datatype x)
else
cur->_next = buyslistnode(x);//當cur走到尾節點時,建立乙個新節點。
}}void slistpopback(slistnode** pphead)
else
if (cur->_next ==
null)
else
free(cur);
prev->_next =
null;
}}void slistpushfront(slistnode** pphead, datatype x)
else
}slistnode* slistfind(slistnode* phead, datatype x)
phead = phead->_next;
}printf("尋找元素不存在\n");
return
null;
}void slistinsest(slistnode** pphead, slistnode* pos, datatype x)
else
newnode->_next = pos;
prev->_next = newnode;
}}void slisterase(slistnode** pphead, slistnode* pos)
else
prev->_next = pos->_next;
free(pos);
}}int main()
資料結構 單鏈表實現
在鏈式儲存中,節點之間的儲存單元位址可能是不連續的。鏈式儲存中每個結點都包含兩部分 儲存元素本身的資料域和儲存結點位址的指標域。結點中的指標指向的是下乙個結點,也就是儲存的下乙個結點的位址。1.建立鍊錶 在建立鍊錶時,頭結點不儲存資料,但可以儲存鍊錶的資訊。struct header 儲存資料的結點...
資料結構 單鏈表實現
package list public class singlelinkedlist private class node public node object data 頭插法 public void headinsert object data 尾插法 public void tailinser...
資料結構 單鏈表實現
單鏈表的頭沒有儲存資訊,僅作為乙個記號 單鏈表有乙個next指標,指向下乙個節點 可以在除頭節點外的任何節點進行增刪改查,但是在鍊錶頭部操作和在尾部操作所消耗的資源是大不相同的。package com.base class singlelinkedlist 初始化乙個頭節點,不存放資料 privat...