要用到
malloc
free
头文件#include <malloc.h>
#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct link* list;
struct link
{
int a[20];
int last;
};
list make()
{
list p;
p = (list)malloc(sizeof(struct link));
return p;
}
int findnum(int x, list p)
{
if (x >= 0 && x <= p->last)
{
cout << endl << p->a[x];
return p->a[x];
}
else
cout << "error";
return -1;
}
int findplace(int x, list p)
{
int i = 0, flag = 0;
for (; i <= p->last; i++)
{
if (p->a[i] == x)
{
flag = 1;
cout << endl << i;
return i;
}
}
if (!flag)cout << endl << "Not found.";
return -1;
}
void bye(int x, list p)
{
if (x <= (p->last))
{
int i = x + 1;
for (; i <= p->last; i++)
{
p->a[i - 1] = p->a[i];
}
p->last--;
}
else
{
cout << endl << "error";
}
}
int main()
{
list p;
cout << "Now we will make a list,which helps you locate the struct link.It's name is p.";
p = make();
int i = 0;
for(;i<7;i++)
{
p->a[i] = i * 3;
}
p->last = 6;
cout << endl << "The length is 7.ButI won't tell you the concrete content.";
cout << endl << "One chance to find the place based on the number.";
int guess; cin >> guess; int result = findplace(guess,p);
cout << endl << "One chance to find the number based on the place.";
cin >> guess; result = findnum(guess, p);
cout << endl << "One chance to say bye to one number based on the place.";
cin >> guess; bye(guess, p);
cout << endl << "One chance to find the number based on the place.";
cin >> guess; result = findnum(guess, p);
free(p);
cout << endl << "Game is over and I set the list free.";
}
运行界面:
Now we will make a list,which helps you locate the struct link.It's name is p.
The length is 7.ButI won't tell you the concrete content.
One chance to find the place based on the number.31
One chance to find the number based on the place.515
One chance to say bye to one number based on the place.5One chance to find the number based on the place.5
18
Game is over and I set the list free.