循环链表内的结点插入
来源:互联网 发布:mac桌面文件夹路径 编辑:程序博客网 时间:2024/04/30 03:12
/* 循环链表内的结点插入 */
#include "stdio.h"
struct clist
{
int data;
struct clist *next;
};
typedef struct clist node;
typedef node *clink;
/*循环链表的输出*/
void printclist(clink head)
{
clink ptr;
ptr=head;
do
{
printf("[%d]",ptr->data);
ptr=ptr->next;
}while(ptr!=head&&head!=head->next);
printf("/n");
}
/*循环链表的节点插入*/
clink insertnode(clink head,clink ptr,int value)
{
clink new_node;
clink previous;
new_node=(clink)malloc(sizeof(node));
new_node->data=value;
new_node->next=NULL;
if(head==NULL)
{
new_node->next=new_node;
return new_node;
}
if(ptr==NULL)
{
/*第一种情况:插在第一个结点之前且成为链表开始。*/
new_node->next=head;
previous=head;
while(previous->next!=head)
previous=previous->next;
previous->next=new_node;
head=new_node;
}
else
{
/*第二中情况:插在节点之后*/
new_node->next=ptr->next;
ptr->next=new_node;
}
return head;
}
void main()
{
clink head=NULL;
int list[6]={1,2,3,4,5,6};
int i;
head=insertnode(head,head,list[0]);
printclist(head);
/*第一种情况:插在第一结点之前且成为链表开始*/
head=insertnode(head,NULL,list[1]);
printclist(head);
for(i=2;i<6;i++)
{
/*第二种情况:插在第一个结点后*/
head=insertnode(head,head,list[i]);
printclist(head);
}
}
- 循环链表内的结点插入
- 有序的循环链表中插入结点
- C语言实现双向非循环链表(带头结点尾结点)的节点插入
- c++实现循环单链表的相关操作(创建,插入,删除,保序插入,统计结点)
- 循环链表的初始化、插入、删除、返回结点位置、遍历
- C语言实现双向非循环链表(不带头结点)的节点插入
- AVL树上结点的插入
- 链表结点的插入
- 带头结点的循环单链表
- 插入新结点到指定结点的指定位置
- 按规则插入结点,然后删除指定的结点。
- 头结点链表的三种插入结点方式
- 双向链表结点的插入
- 平衡二叉排序树插入结点的学习总结
- 插入结点的操作(单链表)
- 在表头插入新的结点
- 在表尾插入新的结点
- 二叉排序树的建立、结点插入及删除
- 申请拍拍的步骤
- umboy推荐:学习和使用RMS你应该看如下网址
- windows文件介绍
- HTML小技巧的一些小技巧
- 女人为难男人的馊主意
- 循环链表内的结点插入
- Excel Report 一个小巧实用基于java实现的Excel报表生成工具
- 我与处男恋爱的麻烦事
- 解决grub删分区了以后不能启动windows的毛病..
- flash与js通信
- bash 语法 小结
- 运动+饮食+好心情 IT人员健康三剑客
- IE7.0主页无法修改的解决方法
- 根据控件ID获取控件