panda_1

线性表的存储结构---链式存储

                           //构造一个空表
int initList(Lnode* L)
{
	L = new Lnode;
	L->next = NULL;
	return 1;
}


                            //销毁单链表
int DestroyList(Lnode* L)
{
	Lnode* p;
	while (L)
	{
		p = L;
		L = L->next;
		delete p;//删除节点
	}
	if (L)
	{
		return 0;
	}
	else return 1;
}


                             //清空链表
int ClearList(Lnode* L)
{
	Lnode* p, * q;
	p = L->next;
	while (p)//直到表尾
	{
		q = p->next;
		delete p;
		p = q;
	}
	L->next = NULL;//头节点指针域为空
	return 1;
}



                             //获取单链表长
int ListLength(Lnode* L)
{
	Lnode* p;
	p = L->next;
	int i = 0;
	while (p)
	{
		i++;
		p = p->next;
	}
	return i;
}

                             //获取线性表某一个元素
int GetElem(Lnode* L, int i, int& e)
{
	Lnode* p;
	p = L->next;int j = 1;//初始化
	while (p && j < i)
	{
		p = p->next;
		++j;
	}
	if (!p || j > i)return 0;//第i个元素不存在
	e = p->a;//获取第i个元素
	return 1;
}
                              //头插法

void CreateList(lnode *L,int n)
{
    lnode* p;
    L = new lnode;
    L->next = NULL;//建立一个带头结点的单链表
    for (int i = n; i > 0; --i)
    {
        p = new lnode;//创建一个新的节点
        cin >> p->data;
        p->next = L->next;//插入到表头
        L->next = p;
    }
}

                             //尾插法
void CreateList1(lnode* L2, int n)
{
    lnode* r, * p;
    L2 = new lnode;
    L2->next = NULL;
    r = L2;//尾指针r指向头节点
    for (int i = 0; i < n; i++)
    {
        p = new lnode;
        cin >> p->data;//生成新节点输入新元素
        p->next = NULL;
        r->next = p;//插入到尾表
        r = p;//r指向新的尾节点
    }
}```

posted on 2021-07-12 17:15  panda_1  阅读(54)  评论(0)    收藏  举报

导航