1、链表
定义
typedef struct node{
int data;//数据域
node * next;//指针域
}LNode,*LinkList;//LinkList是指向LNode类型数据的指针类型定义
struct lklist{
struct node;
int size;
}
基本操作:
//初始化链表
LinkList init_list()
{
LinkList L=new LNode;
if(!L)
return NULL;
L->next=NULL;//指针域置空
return L;
}
//打印链表
void Printf_list(LinkList &L)
{
LinkList temp=L->next;
while(temp!=NULL)
{
cout<<temp->data<<"->";
temp=temp->next;
}
}
//插入数据(头插)
void create_LinkList(LinkList &L,int n)
{
while(n--)
{
LinkList s=new LNode;
cin>>s->data;
s->next=L->next;
L->next=s;
}
}
//插入数据(尾插)
void create_LinkList_back(LinkList &L,int n)
{
LinkList r=L;
while(n--)
{
LinkList s=new LNode;
cin>>s->data;
s->next=NULL;
r->next=s;
r=s;
}
}
2、栈
定义
typedef struct SqStack_dynamic{
int* base;//栈底
int* top;//栈顶
}SqStack_dynamic;
typedef struct SqStack_static{
int data[Maxsize];
int top;//栈顶
}SqStack_static;
基本操作
//初始化
void InitStack(SqStack_dynamic &stack)
{
stack.base= new int[Maxsize];
stack.top=stack.base;
}
//入栈
void push(SqStack_dynamic &stack,int e)
{
if((stack.top-stack.base)>=Maxsize)
return;
*stack.top=e;
stack.top++;
}
void stack_static_push(int e)
{
data[top]=e;
top++;
}
//出栈
void pop(SqStack_dynamic &stack,int &e)
{
if(stack.base==stack.top)
return;
stack.top--;
e=*stack.top;
}
void stack_static_pop(int &e)
{
top--;
e=data[top];
}
//获取栈顶元素
int GetTop(SqStack_dynamic &stack)
{
if(stack.base!=stack.top)
return *(stack.top-1);
else
return -1;
}
void stack_static_GetTop(int &e)
{
if(top!=MaxSize)
e=data[top-1];
else
e=-1;
}
3、队列
定义
#define MAXSIZE 100
typedef struct node{
ElemType data[MAXSIZE];
int front,rear;