链式表的实现

#include<stdio.h>
#include<stdlib.h>
#include<iostream>

using namespace std;

typedef int Elementtype;
typedef int Position;
typedef struct Lnode
{
	Elementtype data;
    Lnode *Next=NULL; //注意节点的下一个位置,声明为结构体型的指针
}Mynode;


//计算长度 
int Length_Node(Mynode *head)
{
	Mynode *p=head;
	int i=0;
	while(p->Next!=NULL)//确保下一个节点存在 才i++进行计数
	{
		p=p->Next; 
		i++;
	}
	return i;
}

//插入节点
bool Insert_Node(Mynode *head,Position P,Elementtype T)
{
	int i=1;
	Mynode *current=head;
	Mynode *this_Node=(Mynode*)malloc(sizeof(Mynode));//生成新插入的节点
	if(!this_Node)
	{
		cout<<"内存申请失败"; 
	}
	while(i<P)//寻找位置 
	{
		current=current->Next;
		i++;
	}
	this_Node->data=T;
	this_Node->Next=current->Next;
	current->Next=this_Node;
	return true;
 } 
 
 //删除节点
   bool Delete_Node(Mynode *head,Position p)
  {
  	Mynode *Current=head;
  	Mynode *Pre_Current;
  	int i=0;
    while(i<p)
    {
    	if(i==p-2)//如果是删除节点的前第二个节点。前第二个节点的下一节点就是删除节点的前一个节点
    	{
    		Pre_Current=Current->Next;
    		Current=Current->Next;
		}
		else
		{
			Current=Current->Next;
		}
    	i++;
	}
  	Pre_Current->Next=Current->Next;
  	delete(Current);
  	return true;
  }
  
  int Find_Node(Mynode *X,Position P)
  {
  	Mynode *Current=X;
  	int i=0;
  	while(i<P)
  	{
  		Current=Current->Next;
	  }
	  return Current->data;
  }
  
  int Show_Node(Mynode *head)
  {
  	Mynode *Current=head;
  	while(Current->Next!=NULL)
  	{
  		Current=Current->Next;
  		cout<<Current->data<<"   ";
  		//Current=Current->Next;
	  }
	return 0;
  }
  
  int main()
  {
  	Mynode *head=new Mynode;
  	//head=(Mynode*)malloc(sizeof(Mynode));
  	//Show_Node(head);
    Insert_Node(head,1,5);
    Insert_Node(head,2,6);
    Insert_Node(head,3,7);
    Insert_Node(head,4,8);
    //Insert_Node(head,5,9);
    Show_Node(head);
    cout<<std::endl;
    //Delete_Node(head,2);
    Insert_Node(head,3,9);
    Show_Node(head);
    Delete_Node(head,2);
    Show_Node(head);
    return 0;
  }

共同进步,永远向前!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值