鍊錶作為動態資料結構之一,對其掌握很有必要,鍊錶主要作用有兩個:一是用來代替陣列元素個數不確定的陣列,二是在資料庫管理中對磁碟進行儲存操作。鍊錶分為單鏈表和雙鏈表,單鏈表的末尾結點的指標賦值為0,而雙鏈表的頭部和末尾指標的結點均賦值為0。下面主要介紹單鏈表的一些操作,雙鏈表與其操作類似。對於單鏈表,最基本的操作有鍊錶的建立、鍊錶結點插入、鍊錶結點刪除和鍊錶結點顯示。
定義鍊錶的結點型別:可以是結構體或者某類的物件;
定義鍊錶的頭指標head,並進行初始化為0
定義兩個工作指標p1和p2,用來將結點連線,並其定義結點數n=0.
下面就可以進行鍊錶的建立:
n=n+1;p1=p2=new stu;head=p1//即n=1,建立第乙個結點
p1=new stu;p2->next=p1;p2=p1;//通過p2將結點連線起來,後面建立結點重複這個步驟就好
p2->next=0;//尾結點
插入頭部結點之前:head=p0;p0->next=p1;
插入中間部分:p2->next=p0;p0->next=p1;
插入尾部:p1->next=p0;p0->next=0;
刪除頭結點:head=p1->next;
刪除中間或者尾部結點:p2->next=p1->next;
下面的例子中包含了這四個操作,結點型別是包含學號,姓名,分數的乙個結構體,具體**如下:
#include //編譯預處理命令,輸入輸出流檔案
#include #include #include #include #include using namespace std;
int n=0;
struct stu
;stu * create();
void list(stu *);
stu * insert(stu *, stu *);
stu * del(stu *,int );
void main()
stu * create()
p2->next=0;
delete p1;
return head;
}void list(stu *head)
}stu * del(stu *head,int num)
if(p1->num==num)
else coutnumnum)
if(p1->num>p0->num)
else
}else
n=n+1;
return head;
}
執行結果如下所示:
C語言 單鏈表的建立
鍊錶 動態地進行儲存分配的一種結構,根據需要開闢記憶體單元。鍊錶有乙個頭變數 head 該變數存放乙個位址指向第乙個元素。鍊錶中每乙個元素稱為乙個結點,每個結點由兩個部分構成,一為存放的資料,二為指向下乙個節點的位址 struct student 鍊錶建立函式 當鍊表建立完成後ptail結點位址最後...
c語言建立單鏈表
include include 資料結構定義 typedef struct lnode lnode,linklist 頭插法 void create linklist l,int a,int n 輸出 void print linklist l void main create l,a,10 pri...
單鏈表建立c 實現
學c 第一編寫鍊錶程式。首先是鍊錶節點的建立,分為指標域和資料域,程式建立如下 typedef struct data typedef struct list 這裡定義了鍊錶的資料域為結構體資料,包含姓名和年齡。指標域包含指向下乙個節點的指標next。輸入節點資料,建立鍊錶。程式如下 list cr...