linkdui:
主函数
#include <stdio.h>
#include"liandui.h"
int main(int argc, const char *argv[])
{
linkpos*pos= create_liandui();
pop_rudui(pos,1);
pop_rudui(pos,2);
pop_rudui(pos,3);
show_liandui(pos);
head_chudui(pos);
head_chudui(pos);
show_liandui(pos);
return 0;
}
功能函数
#include <stdio.h>
#include<stdlib.h>
#include"liandui.h"
linkpos*create_liandui()
{
linkpos*pos=(linkpos*)malloc(sizeof(linkpos));
pos->front=(link*)malloc(sizeof(link));
if(pos->front==NULL)
{
printf("erro\n");
}
pos->front->next=NULL;
pos->rear=pos->front;
pos->front->text.len=0;
return pos;
}
void pop_rudui(linkpos*pos,datatype num)
{
link*temp=(link*)malloc(sizeof(link));
if(NULL==temp)
{
printf("creat_erro\n");
return;
}
temp->next=NULL;
temp->text.data=num;
temp->next=pos->rear->next;
pos->rear->next=temp;
pos->front->text.len++;
return;
}
void head_chudui(linkpos*pos)
{
if(pos->front->next==NULL)
{
printf("duikongerro\n");
return;
}
link*temp=pos->front->next;
pos->front->next=temp->next;
free(temp);
pos->front->text.len--;
}
void show_liandui(linkpos*pos)
{
linkpos*p=pos;
while(p->front->next!=NULL)
{
p->front=p->front->next;
printf("%d ",p->front->text.data);
}
printf("\n");
}
头文件
#ifndef __FUNC__
#define __FUNC__
typedef int datatype;
union msg
{
datatype data;
int len;
};
typedef struct link
{
union msg text;
struct link *next;
}link;
typedef struct
{
link*front;
link*rear;
}linkpos;
void pop_rudui(linkpos*pos,datatype num);
void show_liandui(linkpos*pos);
linkpos*create_liandui();
void head_chudui(linkpos*pos);
#endif
主函数
#include <stdio.h>
#include"shunxudui.h"
int main(int argc, const char *argv[])
{
dui*sq=create_shunxudui();
rudui(sq,1);
rudui(sq,2);
rudui(sq,3);
rudui(sq,4);
show_shunxudui(sq);
chudui(sq);
chudui(sq);
show_shunxudui(sq);
len_shunxudui(sq);
return 0;
}
功能函数:
#include <stdio.h>
#include<stdlib.h>
#include"shunxudui.h"
dui* create_shunxudui()
{
dui*sq=(dui*)malloc(sizeof(dui));
if(NULL==sq)
{
printf("erro\n");
return NULL;
}
sq->front=0;
sq->rear=0;
return sq;
}
int dui_is_full(dui*sq)
{
return (sq->rear+1)%N==sq->front ? 1:0;
}
int dui_is_kong(dui*sq)
{
return sq->rear==sq->front ? 1:0;
}
void rudui(dui*sq , datatype num)
{
if(dui_is_full(sq)==1)
{
printf("full\n");
return;
}
sq->data[sq->rear]=num;
sq->rear=(sq->rear+1)%N;
return;
}
datatype chudui(dui*sq)
{
if(dui_is_kong(sq)==1)
{
printf("kong\n");
return (datatype)-1;
}
datatype num=sq->data[sq->front];
sq->front=(sq->front+1)%N;
return num;
}
void show_shunxudui(dui*sq)
{
int i=sq->front;
for(i=sq->front;i!=sq->rear;i=(i+1)%N)
{
printf("%d ",sq->data[i]);
}
printf("\n");
}
int len_shunxudui(dui*sq)
{
int len=0;
int i=sq->front;
for(i=sq->front;i!=sq->rear;i=(i+1)%N)
{
len++;
}
printf("len=%d\n",len);
}
头文件:
#ifndef __FUNC__
#define __FUNC__
#define N 31
typedef int datatype;
typedef struct dui
{
datatype data[N];
int front;
int rear;
}dui;
dui* create_shunxudui();
void rudui(dui*sq , datatype num);
datatype chudui(dui*sq);
void show_shunxudui(dui*sq);
int len_shunxudui(dui*sq);
#endif