实现链表的各种操作(利用链表来实现)
来源:互联网 发布:js取session中的值 编辑:程序博客网 时间:2024/05/01 12:58
#include <iostream>
#include<stdlib.h>
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode*next;
}LinkList;
using namespace std;
int main()
{
void InitList(LinkList*&L);
void CreateListR(LinkList*&L,ElemType e,int n);
void DisList(LinkList*L);
void ListLength(LinkList *L);
void ListEmpty(LinkList *L);
void GetElem(LinkList*L,int i);
void LocateElem(LinkList*L,ElemType e);
void ListInsert(LinkList*&L,int i,ElemType e);
void ListDelete(LinkList*&L,int i,ElemType &e);
void DestoryList(LinkList*&L);
int num;
LinkList *L;
while (cin>>num)
{
switch (num)
{
case 1:InitList(L);break;
case 2:char temp;
cout<<"输入插入元素的个数 ";
int n;cin>>n;
CreateListR(L,temp,n);break;
case 3:DisList(L);break;
case 4: ListLength(L);break;
case 5:ListEmpty(L);break;
case 6:int index;
cout<<"请输入查找原素的下标 ";
cin>>index;
GetElem(L,index);break;
case 7:cout<<"请输入要查找的元素 ";
char keyword;cin>>keyword;
LocateElem(L,keyword);break;
case 8: cout<<"请输入要插入的位置和内容";
int insert_num;cin>>insert_num;
char insert_word;cin>>insert_word;
ListInsert(L,insert_num,insert_word);break;
case 9:cout<<"请输入要删除的位置和内容";
int delete_num;cin>>delete_num;
char delete_word;cin>>delete_word;
ListDelete(L,delete_num,delete_word);break;
case 10:DestoryList(L);break;
}
}
return 0;
}
void InitList(LinkList*&L)
{
L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
cout<<"线性表初始化成功"<<endl;
}
void CreateListR(LinkList*&L,ElemType e,int n)
{
LinkList*s,*r;
L=(LinkList*)malloc(sizeof(LinkList));
r=L;
for(int i=0;i<n;++i)
{cout<<"请输入插入元素 ";
cin>>e;
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
r->next=s;
r=s;
cout<<"插入元素成功"<<endl;
}
r->next=NULL;
}
void DisList(LinkList*L)
{
LinkList *pointer=L->next;
while(pointer!=NULL)
{
cout<<pointer->data<<" ";
pointer=pointer->next;
}
cout<<endl;
}
void ListLength(LinkList *L)
{
int counter=0;
LinkList *p=L;
while(p->next!=NULL)
{
counter++;
p=p->next;
}
cout<<"此时线性表的长度为L->length="<<counter<<endl;
}
void ListEmpty(LinkList *L)
{
if(L->next==NULL)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
void GetElem(LinkList*L,int i)
{
int j=0;
LinkList*p=L;
while(j<i&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
{
cout<<"未查找到该元素"<<endl;
}
else
{
cout<<"依据序号查找到的元素为"<<p->data<<endl;
}
}
void LocateElem(LinkList*L,ElemType e)
{
int i=1;
LinkList*p=L->next;
while(p!=NULL&&p->data!=e)
{
p=p->next;
i++;
}
if(p==NULL)
{
cout<<"输入的元素有误,为查找到"<<endl;
}
else
{
cout<<e<<"的下标为"<<i<<endl;
}
}
void ListInsert(LinkList*&L,int i,ElemType e)
{
LinkList *p=L,*s;
int j=0;
while(j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
{
cout<<"插入位置错误,返回"<<endl;
}
else
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
s->next=p->next;
p->next=s;
cout<<"插入数据成功"<<endl;
}
}
void ListDelete(LinkList*&L,int i,ElemType &e)
{
int j=0;
LinkList*p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
{
cout<<"删除元素失败,返回"<<endl;
}
else
{
q=p->next;
if(q==NULL)
{
cout<<"删除元素失败,返回"<<endl;
}
e=q->data;
p->next=q->next;
free(q);
cout<<"删除元素成功"<<endl;
}
}
void DestoryList(LinkList*&L)
{
LinkList*pre=L,*p=p->next;
while(p!=NULL)
{
free(pre);
pre=p;
p=pre->next;
}
free(pre);
cout<<"销毁线性表成功"<<endl;
}
#include<stdlib.h>
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode*next;
}LinkList;
using namespace std;
int main()
{
void InitList(LinkList*&L);
void CreateListR(LinkList*&L,ElemType e,int n);
void DisList(LinkList*L);
void ListLength(LinkList *L);
void ListEmpty(LinkList *L);
void GetElem(LinkList*L,int i);
void LocateElem(LinkList*L,ElemType e);
void ListInsert(LinkList*&L,int i,ElemType e);
void ListDelete(LinkList*&L,int i,ElemType &e);
void DestoryList(LinkList*&L);
int num;
LinkList *L;
while (cin>>num)
{
switch (num)
{
case 1:InitList(L);break;
case 2:char temp;
cout<<"输入插入元素的个数 ";
int n;cin>>n;
CreateListR(L,temp,n);break;
case 3:DisList(L);break;
case 4: ListLength(L);break;
case 5:ListEmpty(L);break;
case 6:int index;
cout<<"请输入查找原素的下标 ";
cin>>index;
GetElem(L,index);break;
case 7:cout<<"请输入要查找的元素 ";
char keyword;cin>>keyword;
LocateElem(L,keyword);break;
case 8: cout<<"请输入要插入的位置和内容";
int insert_num;cin>>insert_num;
char insert_word;cin>>insert_word;
ListInsert(L,insert_num,insert_word);break;
case 9:cout<<"请输入要删除的位置和内容";
int delete_num;cin>>delete_num;
char delete_word;cin>>delete_word;
ListDelete(L,delete_num,delete_word);break;
case 10:DestoryList(L);break;
}
}
return 0;
}
void InitList(LinkList*&L)
{
L=(LinkList*)malloc(sizeof(LinkList));
L->next=NULL;
cout<<"线性表初始化成功"<<endl;
}
void CreateListR(LinkList*&L,ElemType e,int n)
{
LinkList*s,*r;
L=(LinkList*)malloc(sizeof(LinkList));
r=L;
for(int i=0;i<n;++i)
{cout<<"请输入插入元素 ";
cin>>e;
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
r->next=s;
r=s;
cout<<"插入元素成功"<<endl;
}
r->next=NULL;
}
void DisList(LinkList*L)
{
LinkList *pointer=L->next;
while(pointer!=NULL)
{
cout<<pointer->data<<" ";
pointer=pointer->next;
}
cout<<endl;
}
void ListLength(LinkList *L)
{
int counter=0;
LinkList *p=L;
while(p->next!=NULL)
{
counter++;
p=p->next;
}
cout<<"此时线性表的长度为L->length="<<counter<<endl;
}
void ListEmpty(LinkList *L)
{
if(L->next==NULL)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
void GetElem(LinkList*L,int i)
{
int j=0;
LinkList*p=L;
while(j<i&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
{
cout<<"未查找到该元素"<<endl;
}
else
{
cout<<"依据序号查找到的元素为"<<p->data<<endl;
}
}
void LocateElem(LinkList*L,ElemType e)
{
int i=1;
LinkList*p=L->next;
while(p!=NULL&&p->data!=e)
{
p=p->next;
i++;
}
if(p==NULL)
{
cout<<"输入的元素有误,为查找到"<<endl;
}
else
{
cout<<e<<"的下标为"<<i<<endl;
}
}
void ListInsert(LinkList*&L,int i,ElemType e)
{
LinkList *p=L,*s;
int j=0;
while(j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
{
cout<<"插入位置错误,返回"<<endl;
}
else
{
s=(LinkList*)malloc(sizeof(LinkList));
s->data=e;
s->next=p->next;
p->next=s;
cout<<"插入数据成功"<<endl;
}
}
void ListDelete(LinkList*&L,int i,ElemType &e)
{
int j=0;
LinkList*p=L,*q;
while(j<i-1&&p!=NULL)
{
j++;
p=p->next;
}
if(p==NULL)
{
cout<<"删除元素失败,返回"<<endl;
}
else
{
q=p->next;
if(q==NULL)
{
cout<<"删除元素失败,返回"<<endl;
}
e=q->data;
p->next=q->next;
free(q);
cout<<"删除元素成功"<<endl;
}
}
void DestoryList(LinkList*&L)
{
LinkList*pre=L,*p=p->next;
while(p!=NULL)
{
free(pre);
pre=p;
p=pre->next;
}
free(pre);
cout<<"销毁线性表成功"<<endl;
}
0 0
- 实现链表的各种操作(利用链表来实现)
- 对链表各种操作的实现(C语言)
- 线性表的各种操作实现
- 线性表各种操作的实现
- 链表的各种操作的实现和改进
- 使用Lua实现链表的各种操作
- 单循环链表各种操作的C语言实现
- 对链表的基本实现和各种操作
- 实现堆的各种操作
- java实现链表各种操作
- 实现顺序表的各种基本运算(利用线性表来实现)
- 利用数组创建的顺序表实现各种功能
- 链表的各种实现
- 对栈的各种操作的实现(C语言)
- Sequence_List 顺序表的实现及各种操作
- 静态顺序表用C实现的各种操作
- 单链表各种操作的C语言实现(二)
- 单链表各种操作的C语言实现(一)
- 我的AngularJS学习轨迹
- [LeetCode] Candy
- java程序中输入流和输出流的处理过程
- POJ 2417 大步小步算法
- 学习javascript推荐网站
- 实现链表的各种操作(利用链表来实现)
- 如何解决找不到库文件目录的问题
- 软件开发--大杂烩
- vdsvdsvds
- JQuery4
- 我最喜欢的功能加入了--GPS地图
- struts入门实力教程- 简单易懂
- Android 采用服务监听用户的通话,上传信息到服务器
- 一步步学习微软InfoPath2010和SP2010--第十一章节--创建批准流程(8)--提交表单操作