連結串列筆記1
摘要:
直接上程式碼
老師講課的時候順便寫的,好像是沒有傳值呼叫的那種。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#de...
直接上程式碼
老師講課的時候順便寫的,好像是沒有傳值呼叫的那種。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define STOP_SIGNAL -1 struct node{//單向連結串列; int data; node* nextPtr; }; typedef node LISTNODE; void create_one_node(node** headPtr,node** ptr,node** lastPtr,int* cnt,int num){ //還是喜歡傳引用~~ if ((*headPtr)==NULL){ (*ptr)=(node*)malloc(sizeof(node)); if ((*ptr)==NULL){ printf("malloc error!\n"); } else{ (*headPtr)=(*ptr); (*cnt)++; (*lastPtr)=(*ptr); (*ptr)->data=num; } } else{ (*ptr)=(node*)malloc(sizeof(node)); if ((*ptr)==NULL){ printf("malloc error!\n"); } else{ (*lastPtr)->nextPtr=(*ptr); (*ptr)->data=num; (*lastPtr)=(*ptr); (*cnt)++; } } } void examine_result_of_creating_a_list_1(node* headPtr,int cnt){ if (headPtr==NULL){ printf("It is an empty list!\n"); } else{ node* ptr; ptr=headPtr; for (int i = 0; i < cnt; ++i) { printf("%d ",ptr->data); ptr=ptr->nextPtr; } } } //法2: void examine_result_of_creating_a_list_2(node* headPtr){ if (headPtr==NULL){ printf("It is an empty list!\n"); } else{ node* ptr; ptr=headPtr; while (ptr!=NULL){ printf("%d ",ptr->data); } ptr=ptr->nextPtr; } } int main(){ node *headPtr=NULL,*ptr=NULL,*lastPtr=NULL; int num,cnt=0; scanf("%d",&num); while (num!=STOP_SIGNAL){ create_one_node(&headPtr,&ptr,&lastPtr,&cnt,num); scanf("%d",&num); } examine_result_of_creating_a_list_1(headPtr,cnt); return 0; }