zoukankan      html  css  js  c++  java
  • 009实现一个算法来删除单链表中的一个结点,仅仅给出指向那个结点的指针(keep it up)

    呵呵,这个题不能直接删除已知的结点。由于是单链表,不知道前驱,仅仅知道
    后继结点,直接删除会使链表断开。只是我们能够删除已知结点的后继结点,

    把后继结点的值赋值给已知结点。

    #include <iostream>
    
    struct Node
    {
    	int   data;
    	Node* next;
    };
    
    bool removeNode(Node* vNode)
    {
    	if (vNode == NULL || vNode->next == NULL) return false;
    	Node* pNext = vNode->next;
    	vNode->data = pNext->data;
    	vNode->next = pNext->next;
    	delete pNext;
    	pNext = NULL;
    }
    
    void initList(Node* vRoot)
    {
    	if (vRoot == NULL) 
    	{
    		std::cout << "wrong node
    ";
    		return ;
    	}
    
    	for (int i=0; i<20; ++i)
    	{
    		Node* Temp = new Node;
    		Temp->data = i + 1;
    		Temp->next = vRoot->next;
    		vRoot->next = Temp;
    	}
    }
    
    int main()
    {
    	Node* Root = new Node;
    	Root->next = NULL;
    
    	initList(Root);
    
    	while (Root->next)//最后一个结点没有删除
    	{
    		if (!removeNode(Root)) break;
    	}
    
    	std::cout << Root->data << std::endl;
    	delete Root;
    	Root = NULL;
    
    	system("pause");
    	return 0;
    }


  • 相关阅读:
    RESTful API 设计指南
    理解RESTful架构
    django-mysqlclient_1193错误
    获取当前脚本所在的目录和路径
    20191007
    20191005
    20191001
    20190927
    20190922
    莫比乌斯反演证明
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7015682.html
Copyright © 2011-2022 走看看