程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 非循環單鏈表的創建基礎教程

非循環單鏈表的創建基礎教程

編輯:關於C語言
  鏈表有關重要概念: 頭指針:鏈表中第一個結點(頭結點)的指針; 頭結點:鏈表首元結點之前的一個結點(其數據域只存放空表標志和表長等信息); 首元結點:鏈表中第一個有效結點; 尾元結點:鏈表中有效結點中指針域為NULL的結點(最後一個有效結點);

具有3個有效結點的鏈表結構,如下圖所示: 非循環單鏈表的遍歷 - wj86843248 - 別摸我
 
  鏈表的創建過程
  1. 動態創建一個頭結點                       
  2. 定義pHead使其指向頭結點
  3. 定義pTail使其指向頭結點
  4. 通過pTai使頭結點的指針域為NULL
  5. 動態創建一個新結點,定義pNew使其指向該結點
  6. 向pNew指向結點的數據域賦值data
  7. 將新結點掛在pTail後面,pTail->pNext指向pNew
  8. 將新結點的指針域設為NULL
  9. pTail指向新結點pNew
非循環單鏈表的創建 - wj86843248 - 別摸我  

#include <stdio.h>
#include <malloc.h> //包含malloc函數
#include <stdlib.h> //包含exit函數

typedef struct Node
{
int data; //數據域
struct Node * pNext; //指針域
}NODE, *PNODE; //NODE等價於struct Node, PNODE等價於struct Node *

//函數聲明
PNODE creat_list(void);

int main(void)
{
PNODE pHead = NULL; //等價於struct Node * pHead = NULL

pHead = creat_list(); //創建一個非循環單鏈表

return 0;
}

PNODE creat_list(void)
{
int len; //鏈表的節點個數
int i;
int val; //臨時存放用戶數據

PNODE pHead = (PNODE)malloc(sizeof(NODE)); //分配了一個不存放有效數據的頭節點
if (NULL == pHead)
{
printf("分配失敗!程序終止!");
exit(-1);
}
PNODE pTail = pHead;
pTail->pNext = NULL;

printf("請輸入鏈表節點個數:len = ");
scanf("%d", &len);

for (i = 0; i < len; i++)
{
printf("請輸入第%d個節點的值:", i+1);
scanf("%d", &val);

PNODE pNew = (PNODE)malloc(sizeof(NODE));
if (NULL == pNew)
{
printf("分配失敗!程序終止!");
exit(-1);
}
pNew->data = val;
pTail->pNext = pNew;
pNew->pNext = NULL;
pTail = pNew;
}

return pHead;
}
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved