当前位置:编程学习 > C/C++ >>

跪求C语言 在线等 灰常急!!!!!

要求:写一个C语言 包含以下内容 1 创建链表L linklist great-linklist(); 2 返回链表长度 int listLength(Linklist L); 3将S插入P之前的结点 InsertBefore(Linklist L,LNode*P,LNode*s)
答案://头文件

#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED

typedef int Position;
typedef int ElemType;
const int MAX = 1000;

typedef struct LIST
{
    ElemType elements[MAX];
    int last;
}LIST;

//建立空的线性链表L
void MakeNull(LIST &L);

//在线性链表的位置P插入元素X
void Insert(LIST &L, Position p, ElemType x);

//查找指定元素的位置
bool Locate(LIST L, ElemType x, Position &p);

//查找线性链表L的位置p的元素
bool Retrieve(LIST L, Position p, ElemType &x);

//删除线性链表L的位置P的元素
bool Delete(LIST &L, Position p);

//查找线性链表L的位置p的前驱元素
bool Previous(LIST L, Position p, ElemType &x);

//查找线性链表L的位置p的后继元素
bool Next(LIST L, Position p, ElemType &x);

//打印线性链表L
void Print(LIST L);

#endif // LIST_H_INCLUDED

//实现函数

#include <iostream>
#include <assert.h>
#include "list.h"

using namespace std;

//建立空的线性链表L
void MakeNull(LIST &L)
{
    L.last = 1;
}

//在线性链表的位置P插入元素X
void Insert(LIST &L, Position p, ElemType x)
{
    Position q;
    assert(!(L.last >= MAX-1));
    assert((p < L.last+1) && (p >= 1));

    for (q = L.last; q > p; q--)
        L.elements[q+1] = L.elements[q];
    L.elements[p] = x;
    L.last += 1;
}

//查找指定元素的位置
bool Locate(LIST L, ElemType x, Position &p)
{
    Position q;
    for (q = 1; q <= L.last; q++)
    {
        if (L.elements[q] == x)
        {
            p = q;
            return true;
        }
    }
    return false;
}

//查找线性链表L的位置p的元素
bool Retrieve(LIST L, Position p, ElemType &x)
{
    if ((p > L.last) || (p < 1))
        return false;
    else
        x = L.elements[p];
    return true;
}


//删除线性链表L的位置P的元素
bool Delete(LIST &L, Position p)
{
    Position q;
    if ((p >= L.last+1) || (p < 1))
        return false;
    else
    {
        for (q = p; q < L.last; q++)
            L.elements[q] = L.elements[q+1];
        L.last -= 1;
    }
    return true;
}

//查找线性链表L的位置p的前驱元素
bool Previous(LIST L, Position p, ElemType &x)
{
    if ((p >= L.last+1) || (p < 2))
        return false;
    else
        x = L.elements[p-1];
    return true;
}

//查找线性链表L的位置p的后继元素
bool Next(LIST L, Position p, ElemType &x)
{
    if ((p >= L.last) || (p < 1))
        return false;
    else
        x = L.elements[p+1];
    return true;
}

//打印线性链表L
void Print(LIST L)
{
    assert(L.last > 1);
    cout << "The list is: ";
    for (Position q = 1; q < L.last; q++)
        cout << L.elements[q] << " ";
}

//主函数及其测试数据

#include <iostream>
#include "list.h"

using namespace std;

int main()
{
    LIST L;
    Position p;
    ElemType x;
    bool flag;

    MakeNull(L);

    for (int i = 1; i < 10; i++)
        Insert(L, i, i);
    Print(L);

    flag = Locate(L, 2, p);
    if (flag)   cout << "\nPosition(2) = " << p;
    else        cout << "\nError!" ;

    flag = Locate(L, 1, p);
    if (flag)   cout << "\nPosition(1) = " << p;
    else        cout << "\nError!" ;

    flag = Retrieve(L, 1, x);
    if (flag)   cout << "\nRetrieve(1) = " << x;
    else        cout << "\nError!" ;

    flag = Retrieve(L, 2, x);
    if (flag)   cout << "\nRetrieve(2) = " << x;
    else        cout << "\nError!" ;

    flag = Delete(L, 2);
    if (flag)   cout << "\nAfter deleting ";
    else        cout << "\nError!" ;

    Print(L);

    flag = Previous(L, 1, x);
    if (flag)   cout << "\nPrevious(1) = " << x;
    else        cout << "\nError!" ;

    flag = Next(L, 10, x);
    if (flag)   cout << "\nNext(10) = " << x;
    else        cout << "\nError!" ;

    return 0;
}
//希望对您有用!

上一个:C语言:产生随机数 求高手指导!!!
下一个:C语言、杨辉三角、求修改成空格与数组结合输出、

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,