📄 链式存储.txt
字号:
#include<iostream>
#include<stdio.h>
#include<malloc.h>
#define MAX 10
using namespace std;
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode*next;
}LinkList;
/*链表初始化*/
void f1(LinkList *&L)
{
L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
}
/*尾插法建立链表*/
void f2(LinkList*&L,ElemType a[],int n)
{
L=(LinkList*)malloc(sizeof(LinkList));
LinkList*p=L,*s;
for(int i=0;i<n;i++)
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=a[i];
p->next =s;
p=s;
}
p->next =NULL;
}
/*输出链表的各元素*/
void f3(LinkList*L)
{
LinkList *p=L->next;
if(p==NULL)cout<<"该链表为空"<<endl;
else {cout<<"该链表不为空"<<endl;
while(p!=NULL)
{cout<<p->data <<" ";p=p->next ;}
}
}
/*求链表长度*/
int f4(LinkList *L)
{
LinkList *p=L->next;
int i=0;
if(p==NULL){cout<<"该链表为空"<<endl;return 0;}
while(p!=NULL)
{i++;p=p->next ;}
return(i);
}
/*判断链表是否为空*/
int f5(LinkList *L)
{
LinkList *p=L->next;
return (p==NULL);
}
/*输出单链表的第3个元素*/
int f6(LinkList *L,int n)
{
int j=0;
LinkList *p=L;
while(j<n&&p!=NULL)
{j++;p=p->next ;}
if(p==NULL)return 0;
else
{
cout<<"第4个元素为:"<<p->data <<endl;
return 1;
}
}
/*找元素的位置*/
int f7(LinkList *L,ElemType e)
{
LinkList*p=L->next ;
int i=1;
while (p!=NULL&&p->data!=e)
{i++;p=p->next ;}
if(p==NULL)
{cout<<"不存在这样的元素"<<endl;
return 0;
}
else return (i);
}
/*插入元素*/
int f8(LinkList*&L,ElemType e,int n)
{
LinkList*p=L->next ,*s;int j=1;
while(j<n-1&&p!=NULL)
{j++;p=p->next;}
if(p==NULL)return 0;
else
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
s->next=p->next;
p->next =s;
}
return 1;
}
/*删除链表的第N个元素*/
int f9(LinkList*&L,int n)
{
LinkList*p=L->next ,*q;
int j=1;
while(j<n-1&&p!=NULL)
{j++;p=p->next;}
if(p==NULL)
{
cout<<"无这样的元素"<<endl;
return 0;
}
else
{
q=p->next ;
if(q==NULL)return 0;
p->next=p->next->next ;
free(q);return 1;
}
}
/*释放单链表*/
void f10(LinkList*&L)
{
LinkList*p=L,*q=p->next ;
while (q!=NULL)
{
free(p);
p=q;
q=p->next ;
}
free(p);
}
int main()
{
LinkList*L;
ElemType a[MAX];
f1(L);
cout<<"请输入元素:"<<endl;
for(int i=0;i<MAX;i++)
cin>>a[i];
f2(L,a,MAX);
f3(L);
cout<<endl;
cout<<"链表长度为:"<<f4(L)<<endl;
if(f5(L)==1)cout<<"链表为空"<<endl;
else cout<<"链表不为空"<<endl;
f6(L,4);
cout<<"元素的位置为:"<<f7(L,'h')<<endl;
f8(L,'f',7);f3(L);
cout<<endl;
f9(L,6);f3(L);
f10(L);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -