基礎學習,隻有一種資料類型的單連結清單
對連結清單的了解:
一種鍊式存儲結構,通過指針指向下一個要存儲的資料的位址,在記憶體中不要求連結清單中各個資料記憶體連續,與數組不同,連結清單由節點組成,通過指針連結。
對連結清單概念的了解:
頭指針:頭指針指向連結清單的第一個節點
頭節點:頭節點在定義頭指針時産生
struct node{
int data;
struct node *pNext;
};
連結清單類型定義
data為連結清單該節點存儲的資料
pNext指向下一個節點
對連結清單的操作包括:建立節點、在鍊頭插入節點、在鍊尾插入節點、删除節點、周遊連結清單。
建立節點步驟:
1、申請一個節點大小的記憶體空間
2、檢查空間是否申請成功
3、清理申請到的記憶體空間
4、填充該節點的資料
5、将節點中的指針初始化為NULL
struct node * creat_node(int data){
struct node * p = (struct node *)malloc(sizeof(struct node));
if(NULL == p){
printf("malloc error !\n");
return NULL;
}
bzero(p,sizeof(struct node));
p->data = data;
p->pNext= NULL;
return p;
}
在鍊頭插入節點步驟:
1、新節點指向原來的第一節點
2、頭節點的指針指向新的節點
void insert_head(struct node*pH,struct node*new){
new->pNext = pH->pNext;
pH->pNext = new;
}
在鍊尾插入節點步驟:
1、找到鍊位節點(該節點的指針為NULL)
2、将鍊位節點指針指向新節點
void insert_tail(struct node*pH,struct node*new){
struct node*p = pH;
while(NULL != p->pNext){
p = p->pNext;
}
p->pNext = new;
}
删除節點:
引用塊内容
周遊連結清單步驟:
1、由頭節點開始周遊并判斷目前節點是否為尾節點
2、不是尾節點則取出資料并移動到下一個節點
3、是尾節點,取出資料并停止周遊
void list_foreach(struct node*pH){
struct node *p = pH;
printf("start____________________\n");
while(NULL != p->pNext){
p = p->pNext;
printf("data = %d\n",p->data);
}
printf("data = %d\n",p->data);
printf("end____________________\n");
}