当前位置:首页 > 单链表(不带头结点)
一.单链表 (不带头结点): 1.头插
/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name:
Author:Jerey_Jobs Version:0.1 Date: Description:创建链表用头插法 Funcion List:
*****************************************************/
#include
struct node /*定义链表节点*/ {
int num;
struct node *next; };
typedef struct node Node ; /*简化表示链表节点*/ typedef struct node *Link ;
void create_link( Link *head ) /*创建新的,空的链表*/ {
*head = NULL ; }
void is_malloc_ok( Link *new_node ) /*判断节点是否创建成功*/ {
if( ( *new_node == NULL ) ) {
printf( \ exit( -1 ); } }
void create_new_node( Link *new_node, int i ) /*创建新的节点*/ {
( *new_node ) = ( Link )malloc( sizeof( Node ) ); is_malloc_ok( new_node );
( *new_node ) -> num = 9-i ; }
void insert_node_head( Link *head, Link *new_node ) /*头插*/ {
( *( new_node ) ) -> next = *head ; *head = *new_node; }
void display_link( Link *head ) /*遍历*/ {
Link tmp ; tmp = *head;
while( tmp != NULL ) {
printf( \ tmp = tmp -> next ; } }
void release_link( Link *head ) /*释放*/ {
Link tmp; tmp = *head;
while( *head != NULL ) {
( *head ) = ( *head) -> next; free( tmp ); tmp = ( *head ); } }
int main() {
Link head = NULL ;
Link new_node = NULL; int i ;
create_link( &head );
for( i = 0; i < 10; i++ ) {
create_new_node( &new_node , i );
insert_node_head( &head, &new_node ); }
display_link( &head ); release_link( &head );
return 0; }
2.尾插
/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name:
Author:Jerey_Jobs Version:0.1 Date: Description:创建链表用尾插法 Funcion List:
*****************************************************/
#include
struct node /*定义链表节点*/ {
int num;
struct node *next; };
typedef struct node Node ; /*简化链表节点表示*/ typedef struct node *Link ;
void create_link( Link *head ) /*创建新的,空的链表*/ {
*head = NULL ; }
void is_malloc_ok( Link *new_node ) /*判断节点是否创建成功*/ {
if( ( *new_node == NULL ) ) {
printf( \ exit( -1 ); } }
void create_new_node( Link *new_node, int i ) /*创建节点*/ {
( *new_node ) = ( Link )malloc( sizeof( Node ) ); is_malloc_ok( new_node ); ( *new_node ) -> num = 9-i ; }
void insert_node_tail( Link *head, Link *new_node ) /*尾插插入节点*/ {
Link tmp; tmp = *head;
if( tmp == NULL ) /*判断链表为空,则头插*/ {
( *new_node ) -> next = tmp ; *head = *new_node; }
else /*链表不为空,则尾插*/ {
while( tmp -> next != NULL ) {
tmp = tmp -> next; }
tmp -> next = ( *new_node ); ( *new_node ) -> next = NULL ; } }
void display_link( Link *head ) /*遍历*/ {
Link tmp ; tmp = *head;
while( tmp != NULL ) {
printf( \ tmp = tmp -> next ; } }
void release_link( Link *head ) /*释放*/ {
Link tmp ; tmp = *head ;
while( *head != NULL ) {
共分享92篇相关文档