数据结构中链表的后插(不带表头)

#include
#include
struct node //后插
{int num;struct node * next;
};typedef struct node Node;
typedef struct node * Link;void create_link(Link * head)
{*head = NULL;
}void create_node(Link * new_node)
{*new_node = (Link)malloc(sizeof(Node));
}void insert_node_tail(Link * head,Link new_node)
{Link p;p = *head;if(NULL==*head){*head=new_node;new_node->next=NULL;}else{while(p->next !=NULL){p=p->next;}p->next=new_node;new_node->next=NULL;}
}void insert_node_mid_behind(Link * head,Link new_node,int loc)
{Link p;p=NULL;//总是被忽略p = *head;if(NULL==*head)//p{*head = new_node;new_node->next = NULL;}else{while(p->next !=NULL && p->num != loc)//->next特别重要{p = p->next;//一定要理解这个写法}new_node->next=p->next;p->next = new_node;}
}void display_link(Link head)
{Link p=NULL;p = head;if(NULL==p){printf("Link is Empty!\n");return;       //这句不能少!!!流程返回,值不返回。}while(p != NULL){printf("%d\t",p->num);//printf("%5d\n",p->num);p = p->next;}printf("\n");
}void release_link(Link * head)
{Link p=NULL;      //先赋值啊!!!p=*head;while(*head!=NULL)    //这里不能写p,p被释放{p=*head;*head=(*head)->next;free(p);}
}int main()
{Link head;//这两个是指针,要赋NULLLink new_node;int i,loc;create_link(&head);for(i=0;i<10;i++){create_node(&new_node);new_node->num=i+1;insert_node_tail(&head,new_node);}display_link(head);create_node(&new_node);//这句太厉害了printf("Input loc:");scanf("%d",&loc);printf("Input new_node->num:");scanf("%d",&new_node->num);//搞忘了,num是int型insert_node_mid_behind(&head,new_node,loc);//整理与上面new的关系!!!create_node(&new_node);//这句太厉害了,放display前或后都行!!!!display_link(head);release_link(&head);display_link(head);create_node(&new_node);//这句太厉害了return 0;      //这句不能少!!!
}

输出结果:

judy@judy-virtual-machine:~/桌面/ft$ ./yx3
1       2       3       4       5       6       7       8       9       10
Input loc:5
Input new_node->num:88
1       2       3       4       5       88      6       7       8       9     10
Link is Empty!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部