菜鸟自学数据结构系列——(一)如何写出能够在VC下运行的单链表生成程序
生活随笔
收集整理的這篇文章主要介紹了
菜鸟自学数据结构系列——(一)如何写出能够在VC下运行的单链表生成程序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近打算自學數據結構,于是就在網上淘了兩本書,一本是清華大學出版社出的嚴蔚敏老師的數據結構,一本是程杰的大話數據結構。直接看嚴老師的那一本實再是很吃力。于是我就先看大話的內容后,在深入的看嚴老師的書。大話數據結構寫的非常有意思,語言很口語化,對于有些概念都用一些通俗的語言描述,看著不累,但是個人覺得其內容的深度太低,只適合了解一下基礎的概念。想深入的學習,還是嚴老師的那本書。所以個人覺得兩本書一起看會比較好。樓主之前學過C語言,但是學的很爛,最近也在復習C 的一些知識。數據結構用的多的C的知識是指針,結構體,還有函數。都是C的精華內容。這幾天看完了線性表的內容,于是就想寫幾個程序。找到的大多程序都只是給了一個算法,對于我這樣的菜鳥來說,程序是跑不起來的。于是最終找到的高一凡老師寫的嚴蔚敏老師那本書的所有算法的具體實現。是可以直接在VC下運行的程序代碼。看后自己寫了一個含有頭節點的單鏈表的生成和打印輸出程序。有關單鏈表生成的插入發法主要有兩種。
頭插法,和尾插法。這里我用的
尾插法。下面是程序的代碼
/************************************************************************/
/* 本程序實現含有頭結點的單鏈表的建立和數據域元素的輸出2012年7月8日0:14:05 */
/************************************************************************/
#include < stdio.h >
#include < malloc.h >
typedef int ElemType ;typedef struct LNode // 線性表的單鏈表存儲結構
{ElemType data;struct LNode *next;
} LNode,*Pnode; // 這樣以后LNode 相當于struct LNode Pnode 它表示的是結構體的數據類型。Pnode 相當于struct LNode */*線性表創建函數*/Pnode creat_linklist(void)
{int i; //循環的計數參數int tem; // 暫時存儲用戶輸入節點的數據域的值int len; //創建線性表的長度Pnode phead,pnew,ptail;// 定義三個節點 phead 表示頭結點,pnew 表示新生成的節點,ptail表示尾節點。phead = (Pnode)malloc(sizeof(LNode));// 為頭結點分配一段內存ptail = phead;// 讓頭節點指向尾節點,利用尾插法建立鏈表。ptail ->next = NULL;//尾節點后繼指向空printf("請輸入需要生成單鏈表節點的個數:len = ");scanf("%d",&len);for (i = 0;i < len; i++ ){printf("請輸入單鏈表的第%d個節點的值:",i+1);scanf("%d",&tem);pnew = (Pnode)malloc(sizeof(LNode));//生成一個新節點pnew->data = tem;//將用戶輸入的值賦給新節點的數據域ptail->next = pnew ;//尾插法的實現pnew->next=NULL;ptail = pnew;}return phead;
}
/* 線性表遍歷輸出*/
void traverse_linklist (Pnode phead){Pnode p = phead->next;while (NULL != p){printf(" %d ", p->data);p = p->next;}return;}int main(void){Pnode phead = NULL;phead = creat_linklist();traverse_linklist(phead);return 0;}
這里解釋一下什么是尾插法。首先分配三個節點,頭結點Phead,尾節點Ptail,以及新生成節點Pnew.首先給頭結點和尾節點分配內存,然后讓頭節點和尾節點相等。
在新節點生成之后另Ptail的后繼繼節點尾Pnew,語句為Ptail->next= Pnew: 然后把Pnew后繼指向空節點 Pnew->=NULL; 然后另Ptail=Pnew;
這樣就把Pnew 掛在了Phead 的后面。
這以后每次循環之后 Ptail 總是指向鏈表的尾部
所以這種發法叫做尾插法
總結
以上是生活随笔為你收集整理的菜鸟自学数据结构系列——(一)如何写出能够在VC下运行的单链表生成程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 未来之路—写在大二结束之前
- 下一篇: 菜鸟学java ——(一)面向对象程序设