今天實現單鏈表的初始化,遍歷時,都遇到了一些問題,覺得比較有意義,所以,提筆記錄下吧~~
- 鏈表定義
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
- 初始化
void InitList(LinkList* L){
//分配頭結點//LNode!!!!!!
*L=(LNode*)malloc(sizeof(LNode));
(*L)->next=NULL;
//insert elements
int length;
printf("please input the linklist's length:");
scanf("%d",&length);
printf("please input the linklist's num:");
LNode *p,*q;
ElemType e;
q=*L;
//insert start
for(int i=0;i<length;i++){
p=(LNode*)malloc(sizeof(LNode));
scanf("%d",&e);
p->data=e;
q->next=p;
q=p;
}
p->next=NULL;
}
初始化注意
1.分配頭結點時,要將頭結點定義爲結構體類型,分配的size也爲結構體的大小
2.因爲在定義的時候我們也實現了初始化,因此,在傳遞參數時,我們要以地址爲形參。
- 鏈表遍歷
void traverse(LinkList L){
LinkList p;
p=L->next;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
}
遍歷時,不需要傳參數,因爲不涉及鏈表數值的更改。
總結:
1.插入刪除需要傳遞指針,遍歷查詢不需要指針