• 链表的操作(未完待续)


    #include<iostream>
    using namespace std;
    
    typedef struct LNode {
    	int data;
    	struct LNode *next;
    }LNode , *LinkList;
    
    LNode *p,*q;
    LinkList H;
    
    //求链表的长度
    int ListLength(LinkList L)
    {
    	 p = L;
    	 int k = 0;
    	 while(p){
    	 	k++;
    	 	p = p->next;
    	 }           
    	 return k;                                                            
    } 
    // 查找元素操作
    LNode *Locate(LinkList L,int e) //e's type is int 
    {
    	//在L所指链表中查找第一个值和e相等的元素,若存在,则返回
    	//它在链表中的位置,即指向该数据的元素所在节点的指针,否则返回NULL 
    	p = L;            //用指针的方法代替下标,需要用一个节点类型的指针替换一下,以便操作 
    	while(p && p->data != e) p = p->next;
    	return p;
    } 
    //插入节点操作(前插)
    void Insert (LinkList &L,LNode *p,LNode *s)
    {
    	//指针p指向L为头节点的链表中某个节点,将s节点插入到p节点之前
    	if (p == L){
    		s->next = L;
    		L = s;
    	} else {
    		q = L;
    		while( q->next !=p ) q = q->next;//迭代查找 
    		q->next = s;
    		s->next = p;
    	}
    } 
    
    //删除节点的操作
    void Delete(LinkList &L,LNode *p,int e)
    {
    	//p 指向链表中的某一个节点,从链表中删除该节点并由e返回该节点的值 
    	if( p == L)  //L 就代表头节点
    	{
    		L = p->next;
    	}else{
    		q = L;
    		while(q->next != p)q = q->next;   //p,q 都是地址,且p-〉next也是地址 
    		q->next = p->next;
    	}
    	e = p->data;
    	delete p; 
    } 
    

  • 相关阅读:
    学习&分享
    跳槽
    20121113:延期通知书
    2012.9.9 baocheng博客园正式与大家见面啦!
    数据库
    ASP.Net模板引擎
    javascript图片切换效果
    dockercompose环境下zookeeper单机搭建、集群搭建
    Linux服务器日常巡检脚本
    MMOS FFB伺服直驱方向盘主控板DIY
  • 原文地址:https://www.cnblogs.com/NYNU-ACM/p/4248792.html
Copyright © 2020-2023  润新知