📄 main.cpp
字号:
#include <iostream.h>
#include <malloc.h>
typedef struct LNode
{int data;
struct LNode *next;
}Lnode, *LinkList;
//建立一个单链表L
void CreatLinkList(LinkList &L,int j)
{
LinkList p,q;
L=(LinkList )malloc(sizeof(Lnode));
L->next=NULL;
q=L;
cout<<"在单链表内输入整数:"<<endl;
for(int i=0;i<j;i++)
{ p=(LinkList)malloc(sizeof(Lnode));
cin>>p->data;
p->next=q->next;
q->next=p;
q=p;
}
}
//输出单链表L的数据元素
int PrintLinkList(LinkList &L)
{
LinkList p;
p=L->next;
if(L->next==NULL)
{
cout<<"链表没有元素!"<<endl;
return 0;
}
cout<<"单链表的数据元素为:";
while(p)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
return 1;
}
//计算单链表L的数据元素个数
void LinkListLengh(LinkList &L)
{
int i=0;
LinkList p;
p=L->next;
while(p)
{
i++;
p=p->next;
}
cout<<"单链表的数据元素个数为:"<<i<<endl;
}
//在单链表L的第I个元素前插入一个数据元素X
int InsertLinkList(LinkList &L, int i, int x)
{
LinkList p,s;
int j=0;
p=L;
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p||j>i-1)
{
cout<<"插入元素的位置不合理!";
return 0;
}
s=(LinkList)malloc(sizeof(LNode));
s->data=x;
s->next=p->next;
p->next=s;
return 1;
}
int DeleteLinkList(LinkList &L,int i)
{//删除单链表L的第I个数据元素。
LinkList p,q;
int j=0;
p=L;
while(p->next&&j<i-1)
{
p=p->next;
++j;
}
if(!(p->next)||j>i-1)
{
cout<<"删除元素的位置不合理!";
return 0;
}
q=p->next;
p->next=q->next;
i=q->data;
free(q);
return 1;
}
//销毁单链表L
void DestroyLinkList(LinkList &L)
{
LinkList p,q;
p=L->next;
while(L->next!=NULL)
{
q=p->next;
L->next=q;
free(p);
p=q;
}
free(L);
cout<<"链表已经被销毁!"<<endl;
}
void main()
{
LinkList L;
int i,j,x;
cout<<"输入的元素的个数:";
cin>>j;
CreatLinkList(L,j);
LinkListLengh(L);
PrintLinkList(L);
cout<<"在第几个元素前插入:";
cin>>i;
cout<<"输入插入的元素:";
cin>>x;
InsertLinkList(L,i,x);
LinkListLengh(L);
PrintLinkList(L);
cout<<"输入删除元素的位置:";
cin>>i;
DeleteLinkList(L,i);
LinkListLengh(L);
PrintLinkList(L);
DestroyLinkList(L);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -