链式数据结构 单链表

typedef  struct  LNode
{
    
int  nData;
    
struct  LNode *  pNext;
}LNode, 
* LinkList;

//  output error
void  MyError( void )
{
    std::cout 
<<   " error "   <<  std::endl;
}
//  create List
bool  CreateList(LinkList &  pList)
{
    pList 
=  (LinkList)malloc( sizeof (LNode));
    
if  (NULL  ==  pList)
    {
        
return   false ;
    }

    pList
-> nData  =   0 ;
    pList
-> pNext  =  NULL;

    
return   true ;
}

//  insert element
bool  InsertElement(LinkList &  pList,  int  nPos,  int  nElement)
{
    LinkList pListTemp 
=  pList; 
    
int  nIndex  =   0 ;

    
while  (NULL  !=  pListTemp  &&  nIndex  <  nPos)
    {
        
++ nIndex;
        pListTemp 
=  pListTemp -> pNext;
    }

    LinkList pNode 
=  (LinkList)malloc( sizeof (LNode));
    
if  (NULL  ==  pNode)
    {
        
return   false ;
    }

    pNode
-> nData  =  nElement;
    pNode
-> pNext  =  pListTemp -> pNext;
    pListTemp
-> pNext  =  pNode;

    
++ pList -> nData;

    
return   true ;
}

//  delete element
bool  DeleteElement(LinkList &  pList,  int  nPos)
{
    LinkList pListTemp 
=  pList;
    
int  nIndex  =   0 ;

    
while  (NULL  !=  pListTemp -> pNext  &&  nIndex  <  nPos  -   1 )
    {
        pListTemp 
=  pListTemp -> pNext;
        
++ nIndex;
    }

    
if  (NULL  ==  pListTemp -> pNext  ||  nIndex  >  nPos  -   1 )
    {
        
return   false ;
    }

    LinkList pNode 
=  pListTemp -> pNext;
    pListTemp
-> pNext  =  pListTemp -> pNext -> pNext;
    
-- pList -> nData;
    free(pNode);

    
return   true ;
}

//  Edit element
void  EditElement(LinkList &  pList,  int  nPos,  int  nElement)
{
    LinkList pListTemp 
=  pList;
    
int  nIndex  =   0 ;
    
while  (NULL  !=  pListTemp -> pNext  &&  nIndex  <  nPos)
    {
        pListTemp 
=  pListTemp -> pNext;
        
++ nIndex;
    }

    pListTemp
-> nData  =  nElement;
}

//  Output list
void  OutPutElements( const  LinkList &  pList)
{
    LinkList pListTemp 
=  pList -> pNext;
    
while  (NULL  !=  pListTemp)
    {
        std::cout 
<<  pListTemp -> nData  <<  std::endl;
        pListTemp 
=  pListTemp -> pNext;
    }
}

int  _tmain( int  argc, _TCHAR *  argv[])
{
    LinkList pList;

    
if  ( ! CreateList(pList))
    {
        MyError();
    }

    
for  ( int  i  =   0 ; i  <   10 ++ i)
    {
        
if  ( ! InsertElement(pList, pList -> nData, i))
        {
            MyError();
        }
    }

    
if  ( ! DeleteElement(pList,  2 ))
    {
        MyError();
    }

    
if  ( ! DeleteElement(pList,  1 ))
    {
        MyError();
    }

    EditElement(pList, 
5 0 );
    OutPutElements(pList);

    
return   0 ;
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值