#define _crt_secure_no_warnings
#include#include#include#include#include#include "linklist.h"
//初始化鍊錶
struct linknode * init_linklist()//pheader頭指標用來返回首位置 ptail中間變數用來遍歷資料 newnode資料
//ptail = pheader ptail->next(引到當前資料位址) = newnode(資料位址) ptail移位為newnode ptail = newnode newnode 資料有鍵盤輸入 位址初始null 精闢總結!
; int *p = arr;
printf("鍊錶初始化固定數開始\n");
//for (int i = 0; i < 3; i++)
// // //創立新節點
// struct linknode * newnode = malloc(sizeof(struct linknode));
// newnode->num = *p;
// newnode->next = null;
// p++;
// //建立關係
// ptail->next = newnode;
// //更新新的尾節點
// ptail = newnode;
//}//while 迴圈備份***
//while (1)
// // //創立新節點
// struct linknode * newnode = malloc(sizeof(struct linknode));
// newnode->num = *p;
// newnode->next = null;
// p++;
// //建立關係
// ptail->next = newnode;
// //更新新的尾節點
// ptail = newnode;
//}//for迴圈固定輸入三個資料10 20 30
//創立新節點
//struct linknode * newnode = malloc(5*sizeof(struct linknode)); //迴圈外需要一次性將空間都建立夠***
//int const arr[3] = ;
//int * p = arr;
for (int i = 0; i < 5; i++)
//pcurrent->next = null;
return pheader;
}//遍歷鍊錶 for輸出
void foreach_linklist(struct linknode * pheader)
//pcurrent 起始指向的是第乙個真是資料的節點
struct linknode * pcurrent = pheader->next;//此處精髓 pcurrent 用於遍歷內容 pheader->next第乙個有效資料 只用於下個有效資料 自身無資料。
while (pcurrent != null) //pcurrent->num pcurrent(當前資料位址) = pcurrent->next(下個資料位址) 總結!!! }
//插入鍊錶
void insert_linklist(struct linknode* pheader, int oldval, int newval)//插入到oldval前面
//建立新節點
struct linknode * newnode = malloc(sizeof(struct linknode));
newnode->num = newval;
newnode->next = null;
//建立關係
//pprev = newnode; 上個next +new資料+下個next
pprev->next = newnode;
newnode->next = pcurrent; }
//刪除鍊錶
void delete_linklist(struct linknode * pheader, int deleteval)
pprev = pcurrent;//無此語句時 刪除的下個語句直接與頭銜接 丟失所要刪除資料其以前的資料!
pcurrent = pcurrent->next;
} //無效資料 直接return
if(pcurrent==null)
return;
//更改指標的方向
pprev->next = pcurrent->next;
//刪除節點
free(pcurrent);
pcurrent = null;
}//清除鍊錶為空鍊錶
void clear_linklist(struct linknode * pheader)
if (pcurrent == null)
}pheader->next = null;
}//登出鍊錶 即釋放pheader
void destroy_linklist(struct linknode * pheader)
登出鍊錶 即釋放pheader
//void destroy_linklist(struct linknode * pheader);
////鍊錶的反轉
void reserve_linklist(struct linknode * pheader)
if (pcurrent == null)//pprve 指向最後乙個節點 }
//鍊錶長度
void length_linklist(struct linknode * pheader)
printf("鍊錶長:%d\n", num);
}
C 鍊錶基本操作
includeusing namespace std struct node typedef node mylist void createlist mylist head,int n 1 mylist copylist mylist l 2 void insertelem mylist head,...
C 鍊錶的基本操作
鍊錶相對於陣列 插入和刪除的效率高 查詢效率低 儲存額外的節點指標,帶來空間上的消耗 include using namespace std 定義鍊錶的資料結構 struct listnode 建立單向鍊錶 listnode list create return phead next 列印單向鍊錶 ...
雙向鍊錶的基本操作 C
參考其他人的雙向鍊錶實現,搞了乙個便於自己理解的練練筆。include include using namespace std 定義乙個節點 typedef struct doublelinknode node 建立乙個鍊錶 node create list int nums,int n retur...