25_判斷鏈表是否為空+和+求鏈表長度
阿新 • • 發佈:2017-06-05
back eat sem 聲明 ext malloc list() void amp
#include<stdio.h> #include<malloc.h> typedef struct Node{ int data;//數據源 struct Node* pNext;//指針域 }NODE,*PNODE; // NODE等價於struct Node,PNODE等價於struct Node*; //函數的聲明 //創建一個非循環的鏈表 PNODE create_list(void){ int len;//存放結果的數目 int val; //創建頭結點,該頭結點不存儲數據 PNODE pHead = (PNODE)malloc(sizeof(NODE)); PNODE pTail = pHead; //保證PTail永遠指向鏈表的尾結點 pTail->pNext = NULL; if(NULL == pHead){ printf("程序內存分配失敗"); } printf("請輸入你要創建節點的數目:"); scanf("%d",&len); printf("你輸入的值是%d\n:",len); for(int i = 0 ;i < len;i++){ printf("請輸入第%d節點的值:",i+1); scanf("%d",&val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL == pNew){ printf("程序內存分配失敗"); } pNew->data = val; pTail->pNext = pNew; pNew->pNext = NULL; pTail = pNew; } return pHead; }/* 判斷鏈表是否為null */ bool isEmpty(PNODE pHead){ if(pHead->pNext == NULL){//說明鏈表為空 return true; }else{ return false; } } /* 獲得鏈表的長度 */ int length_list(PNODE pHead){ int count = 0; PNODE p = pHead->pNext; // 第一個節點不存儲數據,所以要移動下一個節點 while(NULL != p){//說明該節點不為null int val = p->data; //得到數據 printf("%d\n",val); p=p->pNext;//p移動到下一個節點 count=count+1; } return count; } /* 輸出該鏈表的所有值 */ void printf_list(PNODE pHead){ PNODE p = pHead->pNext; // 第一個節點不存儲數據,所以要移動下一個節點 while(NULL != p){//說明該節點不為null int val = p->data; //得到數據 printf("%d\n",val); p=p->pNext;//p移動到下一個節點 } } int main(){ printf("%s\n","ksdkklsdkl"); PNODE pHead = NULL;//定義一個結構體指針變量 pHead = create_list(); printf_list(pHead); return 0; }
25_判斷鏈表是否為空+和+求鏈表長度