1、运行
2、代码
#include <my_h.h>
//定义双向链表结构体
typedef struct dbl
{
int data;
struct dbl *front;
struct dbl *next;
}dblink,*plink;
//创建头结点
plink create_head()
{
plink H=(plink)malloc(sizeof(dblink));
if(NULL==H)
{
printf("头结点创建失败\n");
return NULL;
}
H->front=NULL;
H->next=NULL;
return H;
}
//创建普通结点
plink create_node(int data)
{
plink new=(plink)malloc(sizeof(dblink));
if(NULL==new)
{
printf("结点创建失败\n");
return NULL;
}
new->front=NULL;
new->next=NULL;
new->data=data;
return new;
}
//头插
int toucha(plink H,int data)
{
if(NULL==H)
return -1;
plink new=create_node(data);
new->next=H->next;
new->front=H;
if(H->next!=NULL)
H->next->front=new;
H->next=new;
return 0;
}
//尾删
int weishan(plink H)
{
if(NULL==H)
return -1;
if(NULL==H->next)
return -2;
plink p=H->next;
while(p->next!=NULL)
p=p->next;
p->front->next=p->next;
free(p);
p=NULL;
return 0;
}
//实现
int main(int argc, const char *argv[])
{
plink H=create_head();//创建链表头
for(int i=97;i<=122;i++)//循环头插
toucha(H,i);
plink p=H;
while(p->next!=NULL)
p=p->next;
while(p!=H)
{
printf("%c->",p->data);
p=p->front;
weishan(H);
}
printf("NULL\n");
return 0;
}