10.17
/*栈链
include
using namespace std;
typedef struct StackNode
{
int data;
struct StackNode* next;
}StackNode,LinkStack;
void initStack(LinkStack& S)
{
S = NULL;
}
bool Push(LinkStack& S, int e)
{
LinkStack p = new StackNode;
p->data = e;
p->next = S;
S= p;
return true;
}
bool Pop(LinkStack& S, int& e)
{
if (S == NULL)return false;
e = S->data;
LinkStack p = S;
S = S->next;
delete p;
return true;
}
int getTop(LinkStack S)
{
if (S != NULL)
return S->data;
}
int main()
{
StackNodeS;
int e;
initStack(S);
Push(S, 5);
Push(S, 10);
cout << getTop(S) << endl;
Pop(S,e);
cout << getTop(S) << endl;
cout << e << endl;
}
//顺序栈
include
define MAXSIZE 100
using namespace std;
typedef struct
{
int* base;
int* top;
int stacksize;
}SqStack;
bool initSqStack(SqStack& S)
{
S.base = new int[MAXSIZE];
if (!S.base)return false;
S.top = S.base;
S.stacksize = MAXSIZE;
return true;
}
bool Push(SqStack& S,int e)
{
if (S.stacksize ==S.top-S.base)return false;
*S.top++ = e;
return true;
}
bool Pop(SqStack& S, int& e)
{
if (S.top == S.base)return false;
e = *--S.top;
return true;
}
int getTop(SqStack& S)
{
if (S.top != S.base)
return *(S.top-1);
}
int main()
{
int e;
SqStack S;
initSqStack(S);
Push(S, 5);
Push(S, 10);
cout << getTop(S) << endl;
Pop(S, e);
cout << getTop(S) << endl;
cout << e << endl;
}
//单链表
include
using namespace std;
typedef struct LNode
{
int data;
struct LNode* next;
}LNode,*LinkList;
int length = 0;
void initLNode(LinkList& L)
{
L = new LNode;
L->next = NULL;
}
bool insert(LinkList& L,int i,int e)
{
if (i < 1 || i > length + 1)
return false;
LinkList p = L;
int j = 0;
while (p && j < i -1)
{
p = p->next;
j++;
}
if (!p || j > i - 1)return false;
LinkList s = new LNode;
s->data = e;
s->next = p->next;
p->next = s;
length++;
return true;
}
bool remove(LinkList& L, int i, int& e)
{
if (i < 1 || i > length)
return false;
LinkList p = L;
int j = 0;
while (p && j < i - 1)
{
p = p->next;
j++;
}
if (!p || j > i - 1)return false;
LinkList q = p->next;
e = q->data;
p->next = q->next;
delete q;
length--;
return true;
}
LNode *query(LinkList& L, int e)
{
LinkList p = L;
while (p && p->data!= e)
{
p = p->next;
}
return p;
}
int main()
{
LinkList L;
initLNode(L);
insert(L, 1, 2);
insert(L, 2, 4);
insert(L, 3, 9);
LinkList p = L->next;
for (int i = 0; i < length; i++)
{
cout <
p = p->next;
}
cout << endl;
int e;
remove(L, 2, e);
p = L->next;
for (int i = 0; i < length; i++)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
cout << e << endl;
cout << query(L, 9)->data << endl;
}
*/
浙公网安备 33010602011771号