7-3 jmu-ds-单链表的基本运算
来源:互联网 发布:确保成本测算数据准确 编辑:程序博客网 时间:2024/05/16 06:37
7-3 jmu-ds-单链表的基本运算(15 分)
实现单链表的基本运算:初始化、插入、删除、求表的长度、判空、释放。
(1)初始化单链表L,输出L->next的值;
(2)依次采用尾插法插入元素:输入分两行数据,第一行是尾插法需要插入的字符数据的个数,第二行是具体插入的字符数据。
(3)输出单链表L;
(4)输出单链表L的长度;
(5)判断单链表L是否为空;
(6)输出单链表L的第3个元素;
(7)输出元素a的位置;
(8)在第4个元素位置上插入‘x’元素;
(9)输出单链表L;
(10)删除L的第3个元素;
(11)输出单链表L;
(12)释放单链表L。
输入格式:
两行数据,第一行是尾插法需要插入的字符数据的个数,第二行是具体插入的字符数据。
输出格式:
按照题目要求输出
输入样例:
5
a b c d e
输出样例:
0
a b c d e
5
no
c
1
a b c x d e
a b x d e
作者: 王俊玲
单位: 集美大学
时间限制: 400ms
内存限制: 64MB
代码长度限制: 16KB
#include<stdlib.h>
#include<iostream>
#include<mm_malloc.h>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void ListCreate_L(LinkList &L, int n)
{
L = new LNode;
L->next = NULL;
LNode *t = L;
LNode *p;
int i;
for(i = 0; i < n; i++)
{
p = new LNode;
cin>>p->data;
p->next = NULL;
t->next = p;
t = p;
if(i == n - 1)
{
t->next = NULL;
}
}
t->next = NULL;
}
Status InitList(LinkList &L)
{
L = new LNode;
L->next = NULL;
return 1;
}
int ListLength(LinkList &L)
{
LNode *p = L->next;
int i = 0;
while(p->next != NULL)
{
i++;
p = p->next;
}
i++;
return i;
}
void ListisEmpty(LinkList &L)
{
if(L->next != NULL)
cout<<"no"<<endl;
else
cout<<"yes"<<endl;
}
void ListPrintNum(LinkList &L)
{
LNode *p = L;
int i;
for(i = 0; i < 3; i++)
{
p = p->next;
}
cout<<p->data<<endl;
}
void getListPos(LinkList &L)
{
LNode *p = L;
int i = 0;
while(p->next != NULL)
{
p = p ->next;
i++;
if(p->data == 'a')
break;
}
cout<<i<<endl;
}
void ListInsert(LinkList &L)
{
LNode *p =L;
int i = 0;
while((i<3)&&p)
{
i++;
p = p->next;
}
LNode *s;
s = new LNode;
s->data = 'x';
s->next = p->next;
p->next = s;
}
void ListDelete(LinkList &L)
{
int i = 0;
LNode *p = L;
while((i<2) && p)
{
i++;
p = p->next;
}
LNode *q = p -> next;
p->next = p->next->next;
delete q;
}
void ListClear(LinkList &L)
{
LNode *p = L, *q;
for(;p->next != NULL;p = q)
{
q = p->next;
delete p;
}
L = NULL;
}
void ListPrint_L(LinkList &L){
LNode *p;
p = L->next;
while(p!=NULL)
{
if(p->next == NULL)
cout<<p->data;
else
cout<<p->data<<" ";
p = p->next;
}
}
int main()
{
LinkList L;
InitList(L);
cout<<L->next<<endl;
int n;
cin>>n;
ListCreate_L(L, n);
ListPrint_L(L);
cout<<endl;
cout<<ListLength(L)<<endl;
ListisEmpty(L);
ListPrintNum(L);
getListPos(L);
ListInsert(L);
ListPrint_L(L);
cout<<endl;
ListDelete(L);
ListPrint_L(L);
ListClear(L);
return 0;
}
#include<iostream>
#include<mm_malloc.h>
using namespace std;
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef char ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void ListCreate_L(LinkList &L, int n)
{
L = new LNode;
L->next = NULL;
LNode *t = L;
LNode *p;
int i;
for(i = 0; i < n; i++)
{
p = new LNode;
cin>>p->data;
p->next = NULL;
t->next = p;
t = p;
if(i == n - 1)
{
t->next = NULL;
}
}
t->next = NULL;
}
Status InitList(LinkList &L)
{
L = new LNode;
L->next = NULL;
return 1;
}
int ListLength(LinkList &L)
{
LNode *p = L->next;
int i = 0;
while(p->next != NULL)
{
i++;
p = p->next;
}
i++;
return i;
}
void ListisEmpty(LinkList &L)
{
if(L->next != NULL)
cout<<"no"<<endl;
else
cout<<"yes"<<endl;
}
void ListPrintNum(LinkList &L)
{
LNode *p = L;
int i;
for(i = 0; i < 3; i++)
{
p = p->next;
}
cout<<p->data<<endl;
}
void getListPos(LinkList &L)
{
LNode *p = L;
int i = 0;
while(p->next != NULL)
{
p = p ->next;
i++;
if(p->data == 'a')
break;
}
cout<<i<<endl;
}
void ListInsert(LinkList &L)
{
LNode *p =L;
int i = 0;
while((i<3)&&p)
{
i++;
p = p->next;
}
LNode *s;
s = new LNode;
s->data = 'x';
s->next = p->next;
p->next = s;
}
void ListDelete(LinkList &L)
{
int i = 0;
LNode *p = L;
while((i<2) && p)
{
i++;
p = p->next;
}
LNode *q = p -> next;
p->next = p->next->next;
delete q;
}
void ListClear(LinkList &L)
{
LNode *p = L, *q;
for(;p->next != NULL;p = q)
{
q = p->next;
delete p;
}
L = NULL;
}
void ListPrint_L(LinkList &L){
LNode *p;
p = L->next;
while(p!=NULL)
{
if(p->next == NULL)
cout<<p->data;
else
cout<<p->data<<" ";
p = p->next;
}
}
int main()
{
LinkList L;
InitList(L);
cout<<L->next<<endl;
int n;
cin>>n;
ListCreate_L(L, n);
ListPrint_L(L);
cout<<endl;
cout<<ListLength(L)<<endl;
ListisEmpty(L);
ListPrintNum(L);
getListPos(L);
ListInsert(L);
ListPrint_L(L);
cout<<endl;
ListDelete(L);
ListPrint_L(L);
ListClear(L);
return 0;
}
阅读全文
0 0
- 7-3 jmu-ds-单链表的基本运算
- 7-3 jmu-ds-单链表的基本运算
- PTA 7-3 jmu-ds-单链表的基本运算
- 7-3 jmu-ds-单链表的基本运算
- jmu-ds-单链表的基本运算
- jmu-ds-单链表的基本运算
- 7-3 jmu-ds-单链表的基本运算(15 分)
- PTA(数据结构)- jmu-ds-单链表的基本运算
- 4-1 jmu-ds-集合的并交差运算(15 分)
- 3ds max基本操作
- 3ds max 基本操作
- 单链表的基本运算
- 单链表的基本运算
- 单链表的基本运算
- 单链表的基本运算
- DS 单链表的实现
- *.3ds的文件格式
- 4-2 jmu-ds-顺序表区间元素删除(15 分)
- 不求甚解-luence
- FTP 被动模式搭建
- Ruby学习笔记(12)_范围Range
- Linux 查看iptables ming
- Failed to read candidate component clas,java.lang.IllegalArgumentException
- 7-3 jmu-ds-单链表的基本运算
- 粘合多款产品的微服务架构 阿里云函数计算再次升级
- Python:递归遍历目录,统计目录大小,并以列表的形式返回所有py文件
- MFC添加弹出菜单,使弹出菜单某项不可用变灰
- 微信小程序代理怎么选
- 机器学习实战笔记(第二章:k近邻算法)
- python搭建微服务服务器
- windows10+visual studio 2017 + report viewer 报表中文乱码
- transient关键字