数据结构(三)

来源:互联网 发布:linux查看时区 编辑:程序博客网 时间:2024/05/18 00:42

一、单链表中的插入与删除 


插入
 第一种情况:在第一个结点前插入
           newnode->link = first ;    
              first = newnode;

第二种情况:在链表中间插入
        
        newnode->link = p->link;
    p->link = newnode;


二、单链表中的插入与删除


int Insert ( LinkList& first, int x, int i ) {
//在链表第 i 个结点处插入新元素 x
    ListNode * p = first;   int k = 0;
    while ( p != NULL && k < i -1  ) 
       { p = p->link;  k++; }      //找第 i-1个结点 
    if ( p == NULL && first != NULL ) {
        printf ( “无效的插入位置!\n” );
        return 0;
    }
    ListNode * newnode =            //创建新结点
        (ListNode *) malloc ( sizeof (ListNode) ); 

 newnode->data = x;
      if ( first == NULL || i == 1 ) {  //插在表前
         newnode->link = first;
         first = newnode;
      }
      else {                               //插在表中或末尾
         newnode->link = p->link;
         p->link = newnode;
      }
      return 1;
 }

0 0
原创粉丝点击