数据结构---单链表

判断单链表是否为空

表中无元素,称为空链表(头指针和头结点依然存在)

判断头结点的指针域是否为空

void ShowList(LinkList L) {
    LinkList p;
    p = L->next;
    cout << "单链表为:";
    while (p) {
        cout << p->data << " ";
        p = p->next;
    }
    cout << endl;
}

销毁单链表

链表销毁后不存在

从头指针开始,依次释放所有的结点

Status DestroyList_L(LinkList &L)
{
Lnode *p;
while(L)
{
p=L;
L=L->next;
delete p;
}
    return OK;
}

清空单链表

链表仍然存在,但链表中无元素,为空链表(头指针和头结点仍然存在)

依次释放所有结点,并将头结点指针域设置为空

Status ClearList_L (LinkList &L)
{
Lnode *p,*q;
p=L->next;
while(p)
{
q=p->next;
delete p;
p=q;
}
L->next=NULL;
return OK;
}

求单链表的表长

从首元结点开始,依次计数所有结点
int ListLength_L(LinkList L)
{
LinkList p;
p=L->next;
i=0;
while(p)
{
i++;//先判断p是否为空,再进行计数
p=p->next;
}
return i;
}

运行代码

#include<iostream>
using namespace std;
typedef struct Lnode
{
	int data;
	struct Lnode* next;
}Londe, * Linklist;
bool InitList_L(Linklist& L)
{
	L = new Lnode;
	if (!L)
		return false;
	L->next = NULL;
	return true;
}
void CreateList(Linklist& L, int n) {
    Linklist r, p;
    L = new Lnode;
    L->next = NULL;
    r = L;
    cout << "请输入单链表:";
    for (int i = 0; i < n; i++) {
        p = new Lnode;
        cin >> p->data;
        p->next = NULL;
        r->next = p;
        r = p;
    }
}
void ShowList(Linklist L) {
    Linklist p;
    p = L->next;
    cout << "单链表为:";
    while (p) {
        cout << p->data << " ";
        p = p->next;
    }
    cout << endl;
}
void ShowList(Linklist L) {
    Linklist p;
    p = L->next;
    cout << "单链表为:";
    while (p) {
        cout << p->data << " ";
        p = p->next;
    }
    cout << endl;
}
void DestroyList_L(Linklist& L)
{
    Lnode* p;
    while (L)
    {
        p = L;
        L = L->next;
        delete p;
    }
  
}
void ClearList_L(Linklist& L)
{
    Lnode* p, * q;
    p = L->next;
    while (p)
    {
        q = p->next;
        delete p;
        p = q;
    }
    L->next = NULL;
}
int ListLength_L(Linklist L)
{
    Linklist p;
    p = L->next;
    int i = 0;
    while (p)
    {
        i++;//先判断p是否为空,再进行计数
        p = p->next;
    }
    return i;
}
int main()
{
    Linklist L;
    InitList_L(L);
    CreateList(L,5);
    ShowList(L);
    DestroyList_L(L);
    ShowList(L);
    ClearList_L(L);
    ShowList(L);
    cout<<"链表长为:"<<ListLength_L(L);
    return 0;
}

posted on 2022-02-06 17:01  眉目作山河  阅读(188)  评论(0编辑  收藏  举报

导航