(12)释放顺序表上。 实验题2/实现单链表的各种基本运算的算法 目的:领会单链表的存储结构和掌握单链表中各种基本运算算法的设计。内容:编写一个程序linklist.cpp,实现单链表的各种基本运算和整体建表算法(假设单链表的元素类型ElemType为char),并在此基础上设计一个程序exp2-2.cpp完成以下功能。 (1)初始化单链表h。 (2)依次采用尾插法插入a、b、c、d、e元素。 (3)输出单链表h。 (4)输出单链表h的长度。 (5)判断单链表h是否为空。 (6)输出单链表h的第3个元素。 (7)输出元素a的位置。(8)在第4个元素的位置上插入f元素。 (9)输出单链表h。 (10)删除单链表h的第3个元素。(11)输出单链表h。 (12)释放单链表h。
时间: 2023-05-20 17:07:40 浏览: 194
以下是对于算法的实现:
#include <iostream>
using namespace std;
typedef struct node {
char data; // 假设单链表的元素类型ElemType为char
struct node * next;
}LNode, *LinkList;
void InitList(LinkList &L)
{
L = new LNode;
L->next = NULL;
}
void CreateList(LinkList &L)
{
InitList(L);
char ch = 'a';
LinkList p = L;
while(ch <= 'e')
{
LinkList tmp = new LNode;
tmp->data = ch++;
tmp->next = NULL;
p->next = tmp;
p = tmp;
}
}
int ListLength(LinkList L)
{
int cnt = 0;
LinkList p = L->next;
while(p)
{
cnt++;
p = p->next;
}
return cnt;
}
bool ListEmpty(LinkList L)
{
if(L->next == NULL)
return true;
return false;
}
char ListGetElement(LinkList L, int pos)
{
int cnt = 1;
LinkList p = L->next;
while(p && cnt < pos)
{
p = p->next;
cnt++;
}
return p->data;
}
int ListLocateElem(LinkList L, char e)
{
int cnt = 1;
LinkList p = L->next;
while(p)
{
if(p->data == e)
return cnt;
cnt++;
p = p->next;
}
return 0;
}
void ListInsert(LinkList &L, int pos, char e)
{
int cnt = 1;
LinkList p = L;
while(p && cnt < pos)
{
cnt++;
p = p->next;
}
LinkList tmp = new LNode;
tmp->data = e;
tmp->next = p->next;
p->next = tmp;
}
void ListDelete(LinkList &L, int pos)
{
int cnt = 1;
LinkList p = L;
while(p && cnt < pos)
{
cnt++;
p = p->next;
}
LinkList tmp = p->next;
p->next = tmp->next;
delete tmp;
}
void ListPrint(LinkList L)
{
LinkList p = L->next;
while(p)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
void DestroyList(LinkList &L)
{
LinkList p = L, q;
while(p)
{
q = p;
p = p->next;
delete q;
}
L = NULL;
}
int main()
{
LinkList L;
CreateList(L);
ListPrint(L);
cout << "List length: " << ListLength(L) << endl;
cout << "List empty: " << ListEmpty(L) << endl;
cout << "List 3rd element: " << ListGetElement(L, 3) << endl;
cout << "Element a index: " << ListLocateElem(L, 'a') << endl;
ListInsert(L, 4, 'f');
ListPrint(L);
ListDelete(L, 3);
ListPrint(L);
DestroyList(L);
return 0;
}
阅读全文