双向链表

#include <iostream>
#include <stdio.h> 
#include <stdlib.h>
typedef float ElemType;
typedef int Status;
typedef struct SXLNode{
	ElemType data;
	struct SXLNode *prior,*next;
}SXLNode,*SXLinkList;
//函数的声明
Status Creat_SX(SXLinkList &head);//双向链表的建立 
void Print_SX(SXLinkList head);//显示链表元素 
Status Insert_SX(SXLinkList &head,Status n,ElemType e);//双向链表的插入 
Status Delete_SX(SXLinkList &head,Status n);//双向链表的删除 






Status Creat_SX(SXLinkList &head)//双向链表的建立 
{
	SXLinkList q,p;
	Status i=0,j;
	head=(SXLinkList)malloc(sizeof(SXLNode));
	head->next=NULL;
	head->prior=NULL;
	p=head;
	
	scanf("%d",&j);
	
	for(i=0;i<j;i++)
	{
		q=(SXLinkList)malloc(sizeof(SXLNode));
		scanf("%f",&q->data);
		q->next=NULL;
		p->next=q;
		q->prior=p;
		p=q;
		
	}
	
	return 0;	
}
void Print_SX(SXLinkList head)//显示链表元素 
{
	SXLinkList q;
	q=head->next;
	
	while(q!=NULL)
	{
		printf("%4.2f ",q->data);
		q=q->next;
	} 
}
Status Insert_SX(SXLinkList &head,Status n,ElemType e)//双向链表的插入 
{
	SXLinkList p,q;
	Status i=1;
	p=head;
	
	while(p!=NULL&&i<n)
	{
		i++;
		p=p->next;
	} 
	q=(SXLinkList)malloc(sizeof(SXLNode));
	q->data=e;
	p->next->prior=q;
	q->next=p->next;
	p->next=q;
	q->prior=p;
	return 0;
}
Status Delete_SX(SXLinkList &head,Status n)//双向链表的删除 
{
	SXLinkList p,q;
	Status i=1;
	p=head;
	
	while(p->next!=NULL&&i<n-1)
	{
		i++;
		p=p->next;
	}
	q=p->next;
	q->next->prior=p;
	p->next=q->next;
	free(q);
} 


 
int main(int argc, char** argv) 
{
	SXLinkList head;
	ElemType e;
	
	//测试不规范请自己去测试发现错误请告知我 
	Creat_SX(head);//创建链表 
	Print_SX(head);//显示链表元素 
	printf("
");
	printf("----------------------------
");
	Insert_SX(head,1,0.3);
	Print_SX(head);//显示链表元素 
	printf("
");
	printf("----------------------------
");
	Delete_SX(head,1);
	Print_SX(head);//显示链表元素 
	return 0;
}
别废话,拿你代码给我看。
原文地址:https://www.cnblogs.com/lvxueyang/p/13707583.html