小言_互联网的博客

双链表的创建头插法和尾插法

433人阅读  评论(0)
//双链表的创建
#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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场