LinkList
LinkList是非常神奇的東西
他算是一種結構和指標搭配的一種產物,我們可以經由這種方式,
不經由陣列這種相對位址,而找到下一個data,這部分,對二元數的處理有很大的幫助
以下紀錄一下可用的sample code
struct linklist {
char data;
struct linklist *nextPtr;
};
typedef struct linklist ListNode;
typedef ListNode* ListNodePtr;
CWinApp theApp;
void insert(ListNodePtr* , char );
void printList(ListNodePtr );
void main( ){
ListNodePtr startPtr = NULL;
char item;
while (1){
cout << "Enter a character: ";
cin >> item;
insert(&startPtr , item);
printList(startPtr);
}
}
void insert(ListNodePtr *sPtr , char value){
ListNodePtr newPtr;
ListNodePtr previousPtr;
ListNodePtr currentPtr;
newPtr = (ListNodePtr )malloc(sizeof(ListNode));
if ( newPtr != NULL){
newPtr->data = value;
newPtr->nextPtr = NULL;
previousPtr = NULL;
currentPtr = *sPtr;
while( currentPtr != NULL && value > currentPtr->data){
previousPtr = currentPtr;
currentPtr = currentPtr->nextPtr;
}
if(previousPtr == NULL){
// 建立第一個Node
newPtr->nextPtr = *sPtr;
*sPtr = newPtr;
}else{
// 建立新Node
previousPtr -> nextPtr = newPtr;
newPtr->nextPtr = currentPtr;
}
}else{
cout << value <<" not inserted.No memory avaliable"<
}
}
void printList(ListNodePtr currentPtr){
if( currentPtr == NULL){
cout <<"List is empty"<
}else{
cout << "the List is "<
while(currentPtr != NULL){
cout << currentPtr->data <<"--> ";
currentPtr = currentPtr->nextPtr;
}
cout << "NULL";
}
cout << endl;
}
他算是一種結構和指標搭配的一種產物,我們可以經由這種方式,
不經由陣列這種相對位址,而找到下一個data,這部分,對二元數的處理有很大的幫助
以下紀錄一下可用的sample code
struct linklist {
char data;
struct linklist *nextPtr;
};
typedef struct linklist ListNode;
typedef ListNode* ListNodePtr;
CWinApp theApp;
void insert(ListNodePtr* , char );
void printList(ListNodePtr );
void main( ){
ListNodePtr startPtr = NULL;
char item;
while (1){
cout << "Enter a character: ";
cin >> item;
insert(&startPtr , item);
printList(startPtr);
}
}
void insert(ListNodePtr *sPtr , char value){
ListNodePtr newPtr;
ListNodePtr previousPtr;
ListNodePtr currentPtr;
newPtr = (ListNodePtr )malloc(sizeof(ListNode));
if ( newPtr != NULL){
newPtr->data = value;
newPtr->nextPtr = NULL;
previousPtr = NULL;
currentPtr = *sPtr;
while( currentPtr != NULL && value > currentPtr->data){
previousPtr = currentPtr;
currentPtr = currentPtr->nextPtr;
}
if(previousPtr == NULL){
// 建立第一個Node
newPtr->nextPtr = *sPtr;
*sPtr = newPtr;
}else{
// 建立新Node
previousPtr -> nextPtr = newPtr;
newPtr->nextPtr = currentPtr;
}
}else{
cout << value <<" not inserted.No memory avaliable"<
}
}
void printList(ListNodePtr currentPtr){
if( currentPtr == NULL){
cout <<"List is empty"<
}else{
cout << "the List is "<
while(currentPtr != NULL){
cout << currentPtr->data <<"--> ";
currentPtr = currentPtr->nextPtr;
}
cout << "NULL";
}
cout << endl;
}
留言
因為發現在EFI當中使用頻率很高,所以此篇文章內容對我的幫助很大,謝謝!
很高興對你有幫助,
我也是BIOS領域的新人
大家一起努力吧