跪求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语言、杨辉三角、求修改成空格与数组结合输出、