当前位置: 首页 > 面试题库 >

手写代码:循环链表插入元素?

封永嘉
2023-03-14
本文向大家介绍手写代码:循环链表插入元素?相关面试题,主要包含被问及手写代码:循环链表插入元素?时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

typedef struct _tag_CircleListNode
{
struct _tag_CircleListNode * next;
}CircleListNode;
typedef struct _tag_CircleList
{
CircleListNode header;
CircleListNode* slider;
int length;
}TCircleList;

 

//插入元素

int CircleList_insert(CircleList* list, CireListNode* node, int pos)
{
int ret = 0, i=0;
TCircleList* sList = (TCircleList*)list;
if (list == NULL || node== NULL || pos<0)
{
return -1;
}
CircleListNode* current = (CircleListNode*)sList;
for(i=0; (i<pos) && (current->next != NULL); i++)
{
current = current->next;
}

//current->next 0号节点的地址

node->next = current->next; //1
current->next = node; //2

//若第一次插入节点

if( sList->length == 0 )
{
sList->slider = node;
}
sList->length++;

//若头插法 current仍然指向头部

//(原因是:跳0步,没有跳走) 中间第一种情况

if( current == (CircleListNode*)sList )
{
//获取最后一个元素
CircleListNode* last = CircleList_Get(sList, sList->length - 1);
last->next = current->next; //3
}
return ret;
}
CircleListNode* CircleList_Get(CircleList* list, int pos) // O(n)
{
TCircleList* sList = (TCircleList*)list;
CircleListNode* ret = NULL;
int i = 0;
if (list==NULL || pos<0)
{
return NULL;
}
{
CircleListNode* current = (CircleListNode*)sList;
for(i=0; i<pos; i++)
{
current = current->next;
}
ret = current->next;
}
return ret;
}

 类似资料:
  • 本文向大家介绍手写代码:反转链表相关面试题,主要包含被问及手写代码:反转链表时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 我尝试实现循环链表的insert方法。我想我取得了一些成功。 问题:当我显示列表时。display方法将循环,因为链接的每个next变量都链接到一个非Null节点对象。所以head永远不会是空对象。根据我对单链表的回忆,head总是指向列表中的第一个节点或其中包含数据的第一个节点。 我对循环链表的概念理解:根据我的理解,循环链表有点像一个单链表,但有一点小的变化:尾部对象的下一个变量指向头部。 来

  • 我想创建一个程序,该程序以排序方式(给定指向最后一个元素的指针)将数据插入单循环链表中。我已经写了代码,试着调试它,但是没有发现到底出了什么问题。我得到的输出是56779

  • 本文向大家介绍手写代码:反转链表 (Java 版)相关面试题,主要包含被问及手写代码:反转链表 (Java 版)时的应答技巧和注意事项,需要的朋友参考一下 参考回答:  

  • 本文向大家介绍手写代码:怎么判断链表有环,怎么找环节点?相关面试题,主要包含被问及手写代码:怎么判断链表有环,怎么找环节点?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 判断是否有环以及环节点  

  • 我是java的初学者。我试图编写一个程序,在给定位置插入一个节点,并显示整个链表。但是,我的节点似乎没有被插入,当我显示链接列表时,只显示第一个节点值。有人能解释一下我哪里出了问题吗? //这里,位置是索引位置。索引从0开始,以大小1结束,就像一个数组。 //插入代码 //遍历代码 //主要方法 输出: