#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;
}
共同进步,永远向前!