zoukankan      html  css  js  c++  java
  • 双向链表之插入

    // Double Linked List
    typedef struct Node{
    	int value;
    	Node *next;
    	Node *prev;
    }Node;
    
    Node *doubleLink_Insert(Node *pHead, int value)
    {
    	// New
    	Node *newNode = (Node *)malloc(sizeof(Node));
    	newNode->value = value;
    	newNode->next = NULL;
    	newNode->prev = NULL;
    
        // Head is null
    	if (pHead == NULL)
    	{
    		pHead = newNode;
    		return pHead;
    	}
    
    	// Insert front
    	if (pHead->value >= value)
    	{
    		newNode->next = pHead;
    		pHead->prev = newNode;
    		pHead = newNode;
    		return pHead;
    	}
    	Node *temp = pHead;
    	// 方法一 与方法二效果相同,但这里只会在temp后面进行插入
    	while(temp->next != NULL && temp->next->value < value)
    	{
    		temp = temp->next;
    	}
    
    	if (temp->next == NULL)
    	{
    		temp->next = newNode;
    		newNode->prev = temp;
    	}
    	else
    	{
    		newNode->next = temp->next;
    		newNode->prev = temp;
    		temp->next->prev = newNode;
    		temp = newNode;
    	}
        return pHead;
    #ifdef TEST // 方法二 while (temp != NULL) { if (temp->value <= value) { if(temp->next != NULL) temp = temp->next; else { //Insert back 在temp的后面插入 temp->next = newNode; newNode->prev = temp; return pHead; } } else { // insert front 在temp之前插入 newNode->next = temp; newNode->prev = temp->prev; temp->prev->next = newNode; temp->prev = newNode; return pHead; } } #endif } int main() { int data[MAX_SIZE] = {5, 4, 3, 2, 1};//{0, 0, 1, 4, 5, 5, 7, 8, 10, 9}; char sizeofT[] = "a"; examSinfor(sizeofT); int length = 0; Node *pHead = NULL; for (int i = 0; i < 15; ++i) { pHead = doubleLink_Insert(pHead, i); } for (int j = 0; j < 15; ++j) { pHead = doubleLink_Insert(pHead, j); } //pHead = doubleLink_Insert(pHead, 2); Node *temp = pHead; while (temp) { cout << temp->value << " "; temp = temp->next; } return 0; }

      

  • 相关阅读:
    P1265 公路修建 最小生成树
    P1991 无线通讯网 最小生成树
    Stock Chase 拓扑
    Rank of Tetris 拓扑排序+并查集
    P1169 [ZJOI2007]棋盘制作 DP悬线法
    P4147 玉蟾宫 二维DP 悬线法
    P1341 无序字母对 欧拉回路
    P2921 [USACO08DEC]在农场万圣节Trick or Treat on the Farm 记忆化搜索dfs
    BSTestRunner插件的用法.py
    Selenium
  • 原文地址:https://www.cnblogs.com/dawnWind/p/2695886.html
Copyright © 2011-2022 走看看