//双链表的创建
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct slist
{
int data;
struct slist *prior;//前驱指针
struct slist *next;//后继指针
}list;
void creatlist_head(list *&l);//创建双链表 头插法
void creatlist_tail(list *&l);//创建双链表 尾插法
void printlist(list *l);//打印双链表
int main(void)
{
list *l;
creatlist_tail(l);
printlist(l);
return 0;
}
void creatlist_tail(list *&l)
{
list *r,*s;
l = (list *)malloc(sizeof(list));
r = l;
int x;
printf("请输入数据项:\n");
cin>>x;
while(x != 0)
{
s = (list *)malloc(sizeof(list));
s->data = x;
r->next = s;
s->prior = r;
r = s;
cin>>x;
}
r->next = NULL;
}
void creatlist_head(list *&l)
{
list *s;
l = (list *)malloc(sizeof(list));
l->next = l->prior = NULL;//建立一个空的双链表
int x;
printf("请输入数据项:\n");
cin>>x;
while(x != 0)
{
s = (list *)malloc(sizeof(list));
s->data = x;
s->next = l->next ;//将s插在首节点之前 头结点之后
if(l->next != NULL)//从第二次开始
{
l->next->prior = s;
}
l->next = s;
s->prior = l;
cin>>x;
}
}
void printlist(list *l)
{
list *p = l->next ;
while(p != NULL)
{
printf("%d ",p->data );
p = p->next ;
}
printf("\n");
}
转载:https://blog.csdn.net/qq_44653420/article/details/102245364
查看评论