#include<stdio.h> #include<stdlib.h> #include<malloc.h> typedef struct LNode{ int data; struct LNode* next; //next是一個指向結構體類型的指針, LNode* 是一個指針數據類型類似int,float那樣的數據類型 }LNode,*LinkList; //創建了2個LNode結構體變量,一個是LNode,另一個是*LinkList。 LinkList List_HeadInsert(LinkList &L , int n)//返回值為一個指針,指針類型為LinkList,這里的&是引用符號,不是取地址符號 { int i,x; LNode *s; L = (LinkList)malloc(sizeof(LNode));//malloc函數返回值是一個指針(地址),大小為數據類型大小 L->next = NULL; for(i=0;i<n;i++) { s = (LinkList)malloc(sizeof(LNode)); printf("請輸入第%d個數字:",i+1); scanf("%d",&x); s->data = x; s->next = L->next; L->next = s; } return L; } int main() { int n; LNode* node; LinkList L;//上面函數的返回值是LinkList類型,那么創建變量時也應該創建一個LinkList類型的變量,不能用LNode創建 printf("請輸入節點個數n:"); scanf("%d",&n); List_HeadInsert(L,n); node = L->next; printf("按照單鏈表的順序輸出鏈表元素:\n"); while(node != NULL)//遍歷鏈表不多說 { printf("%d ",node->data); node = node->next; } printf("\n"); return 0; }