(算法)输出单链表的倒数第k个节点,删除特点的节点和从链表尾一次输出节点值
来源:互联网 发布:淘宝开店上传宝贝教程 编辑:程序博客网 时间:2024/04/29 02:19
输出单链表的倒数第k个节点,其中第0个节点为尾节点,算法如下:
#include<stdafx.h>
#include<stdio.h>
#include<stdlib.h>
struct ListNode
{
int value;
ListNode* nextNode;
};
//链表创建
void createList(ListNode* &root,int a)
{
if(root==NULL)
{
root=(ListNode*)malloc(sizeof(ListNode));
root->value=a;
root->nextNode=NULL;
return;
}
ListNode* temp=(ListNode*)malloc(sizeof(ListNode));
temp->value=a;
temp->nextNode=NULL;
root->nextNode=temp;
root=root->nextNode;
return;
}
//输出链表的倒数第k节点值
void lastK(ListNode* temp,ListNode* temp1,int k)
{
int a=0;
while(temp!=NULL)
{
temp=temp->nextNode;
a++;
}
if(k>a-1)
{
printf("error\n");
return;
}
int m=a-k-1;
while(m>0)
{
temp1=temp1->nextNode;
m--;
}
printf("%d\n",temp1->value);
}
//从尾依次输出链表节点的值
void printfromLast(ListNode* temp)
{
if(temp!=NULL)
{
if(temp->nextNode!=NULL)
{
printfromLast(temp->nextNode);
}
printf("%d ",temp->value);
return;
}
return;
}
//在O(1)时间内删除特定的节点
void deleteNode(ListNode* phead,ListNode* TobeDelete)
{
if(phead==NULL||TobeDelete==NULL)
return;
if(TobeDelete->nextNode!=NULL)
{
ListNode* node=TobeDelete->nextNode;
TobeDelete->value=node->value;
TobeDelete->nextNode=node->nextNode;
delete node;
}
else
{
ListNode* node=phead;
while(node->nextNode!=TobeDelete)
node=node->nextNode;
node->nextNode=NULL;
delete TobeDelete;
}
}
int main(int argc,char**argv)
{
ListNode* root=NULL;
ListNode* temp=NULL;
int a[]={1,2,3,4,5,6};
int len=sizeof(a)/sizeof(int);
for(int i=0;i<len;i++)
{
if(root==NULL)
{
createList(root,a[i]);
temp=root;
}
else
createList(root,a[i]);
}
ListNode* t1=temp;
ListNode* t2=temp;
ListNode* temp1=temp;
printfromLast(temp1);
printf("\n");
printf("ListNode:");
while(temp!=NULL)
{
printf("%d ",temp->value);
temp=temp->nextNode;
}
printf("\n");
lastK(t1,t2,6);
return 0;
}
- (算法)输出单链表的倒数第k个节点,删除特点的节点和从链表尾一次输出节点值
- 输出单链表的倒数第K个节点
- 输出链表的倒数第k个节点
- 输出链表的倒数第k个节点
- 输出链表的倒数第k个节点
- 华为OJ(输出单链表倒数第K个节点)
- 输出链表中倒数第k个节点
- 算法学习-----输出链表的倒数第k个节点
- 算法优解(5)-删除单链表的倒数第k个节点
- 删除单链表的倒数第K个节点
- 单链表的倒数第K个节点
- 第十四题 输出链表的倒数第k个节点的值
- 删除单链表倒数第K个节点
- 单链表删除倒数第k个节点
- 删除链表的倒数第K个节点(每日一道算法题)
- 在单链表和双链表中删除倒数第k个节点
- 输出单向链表倒数第k个节点,倒数第0个指向尾节点.
- 求链表的倒数第K个节点
- 详解在IOS后台执行
- 创建Glusterfs分布式RAID10卷
- GridView控件编辑、更新、删除示例(更新包含有DropDownList控件使用)
- smarty实现的增删改查
- iphone 冒泡排序
- (算法)输出单链表的倒数第k个节点,删除特点的节点和从链表尾一次输出节点值
- 研究生
- 关一个
- Java调用批处理或可执行文件
- iPhone学习开发手记 – 隐藏Status Bar和修改程序名称的小技巧
- V4l2 Capture Sequence 捕获过程
- 视频类的相关开源软件
- Objective-C中的一些特殊的数据类型
- OLED应用不完全手册(一)