当前位置:首页 > 单链表(带头结点)
一.单链表 (带头结点): 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 is_malloc_ok( Link *new_node ) /*为新节点申请内存*/ {
if( (*new_node) == NULL ) {
printf( \ exit(-1); } }
void create_link( Link *head ) /*创建带头节点的新的链表*/ {
( *head ) = ( Link )malloc( sizeof( Node ) ); is_malloc_ok( head ); ( *head ) -> next = NULL; }
void insert_node_head( Link *head, Link *new_node ) /*头插*/ {
(*new_node) -> next = (*head) -> next ;
(*head) -> next = *new_node; }
void display_link( Link *head ) /*遍历*/ {
Link tmp;
tmp = (*head) -> next ;
if( tmp == NULL ) {
printf( \ return ; }
while( tmp != NULL ) {
printf( \ tmp = tmp -> next; } }
void create_new_node( Link *new_node , int i ) {
(*new_node) = (Link)malloc(sizeof(Node)); is_malloc_ok( new_node ); (*new_node) -> num = i; }
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;
/*创建新的节点*/ /*释放*/ int num ;
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 is_malloc_ok( Link *new_node ) /*为新节点申请内存*/ {
if( (*new_node) == NULL ) {
printf( \ exit(-1); } }
void create_link( Link *head ) /*创建带头节点的新的链表*/ {
( *head ) = ( Link )malloc( sizeof( Node ) ); is_malloc_ok( head ); ( *head ) -> next = NULL; }
void insert_node_tail( Link *head, Link *new_node ) {
Link tmp; tmp = *head;
while( tmp -> next != NULL) {
tmp = tmp -> next; }
tmp -> next = (*new_node); (*new_node) -> next = NULL; }
void display_link( Link *head ) /*遍历*/ {
Link tmp;
tmp = (*head) -> next ;
if( tmp == NULL ) {
printf( \ return ; }
while( tmp != NULL ) {
printf( \ tmp = tmp -> next; } }
void create_new_node( Link *new_node , int i ) {
/*尾插*/ /*创建新的节点*/
共分享92篇相关文档