注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
OnlyCxue的个人空间 https://home.eeworld.com.cn/space-uid-383848.html [收藏] [复制] [分享] [RSS]
日志

最近对双向链表的研究(比较好的插入双向链表的程序)

已有 535 次阅读2012-6-13 20:30 |

#include<stdio.h>
#include<stdlib.h>
#define FALSE   0
#define TRUE    1
typedef struct NODE
{
 struct NODE *fwd;
 struct NODE *bwd;
 int        value;
}Node;
//巧妙地插入函数
int dll_insert(Node *rootp, int value )
{
 register Node *this;
 register Node *next;
 register Node *newnode;
 for(this = rootp;(next = this->fwd)!=NULL;this=next)
 {
  if(next->value == value)
   return 0;
  if(next->value > value)
   break;
  
 }
 newnode = (Node *)malloc(sizeof(Node));
 if(newnode == NULL)
  return -1;
 newnode->value = value;
 newnode->fwd = next;
 this->fwd = newnode;
 //分别判断两个指针的位置
 
 if( this != rootp )
  newnode->bwd = this;   //正常插入链表
 else
  newnode->bwd = NULL;   //newnode作为根节点
 if( next != NULL )
  next->bwd = newnode;   //正常插入链表
 else
  rootp->bwd = newnode;  //newnode做为根节点,newnode->fwd=rootp;
 return 1;

}
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章