c 鍊錶的實現

2021-06-06 14:21:22 字數 1755 閱讀 7912

/*

author: jacky ma

date : 23th,may,07

*//*

主要實現:

1 鍊錶的建立,

2 逆置

3 排序

4 有序鍊錶的歸併

5 兩鍊錶連線

6 迴圈鍊錶的判定

*/#include #include using namespace std;

//鍊錶節點結構

struct linknode

;//建立單鏈表

linknode * create(int n)

internode->next = null;

return head;

}//連線鍊錶

linknode * linkcontact(linknode *head1,linknode *head2)

q->next = head2;

return head1 ;

}//鍊錶逆序

linknode * linkrever(linknode *head)

linknode *p,*q,*bq;

p = head;

q = p->next;

p->next = null;

while( q != null )

head = p;

return head;

}//鍊錶排序用插入法

linknode *linksort(linknode *head)

linknode *p,*q,*qb,*hp,*pb;

p = head; //p指向前鍊錶

hp = p;

q = p->next; //隔離鍊錶,第乙個節點首先分離出來

p->next = null; //

while(q != null)

else if(q->data < p->data)//要進行插入

else //插入其他位置

break;

}} if(p==null) //直接插入最後

}head=hp;

return head;

}//有序單鏈表合併後有序

linknode * linkmerge(linknode *head1, linknode *head2)

headp = p;

while(q!=null && p!=null)

else

}if(q == null)

else if(p == null)

cout<<"合併完成!"while(q != null)

return false;

}//輸出單鏈表的值

void printlinkdata( linknode *node)

coutp1 = p1->next;

} while(p2 != null)

while(p3!=null)

linknode *pinter1, *pinter2, *pinter3, *pinter4;

cout<<"鍊錶1排序前序列"next;

linknode *q = pinter4->next;

for(int i=0; i<10; i++)

q->next = p;

//驗證判定鍊錶中環存在性

linkcir(pinter4);

return 0;

}

鍊錶的C 實現

陣列中插入乙個元素或者刪除乙個元素時,必須移動陣列中的元素,從而使動態列表的順序儲存低效。鍊錶可以解決這一問題,它由資料和乙個指向下乙個節點的指標組成。基本的操作有構造 判空 插入 刪除和遍歷。程式如下 include using namespace std template class list ...

c的鍊錶實現

複習了單向鍊錶 雙向鍊錶,中注釋不多,但基本從函式名字就可以知道函式的作用。雙向鍊錶中的前後節點中的思路是按照linux核心中思路寫的。gcc 7.4.0 include include typedef struct node lnode,llist,node void insert llist l...

鍊錶C 實現

node.h 第乙個檔案 ifndef node h define node h define true 1 define false 0 define ok 1 define error 0 define null 0 define flag 1 class node endif node h l...