单链表

今天突然觉得要上传上来,记录一下,就是解说不够详细

#include<iostream>
using namespace std; 
/*---线性表的单链表存储---*/ 
typedef  struct  LNode {  
    double data;  
    struct  LNode *next;
} LinkList;
void Createlist_L(LinkList *L,int i)   //构造单链表 
{
	int a,k;
	LinkList *s,*q;
	q=L;
	for(k=0;k<i;k++)
	{
		cout<<"输入元素:" ; 
		cin>>a;
		s=new LNode;
		s->data=a;
		s->next=NULL;
		q->next=s;
		q=s;
	}
}
void CouteList_L(LinkList *L)      //遍历单链表 
{
	LinkList *q;
	q=L->next;
	while(q)
	{
		cout<<q->data<<" ";
		q=q->next;
	}
	cout<<endl;
}
void ListInsert_L(LinkList *L,double a,int k)     //插入元素 
{
	LinkList *q,*p;
	int i=1;
	p=new LNode;
	q=L;
	while(i<k){
		q=q->next;
		i++;
	}	
	p->data=a;
	p->next=q->next;
	q->next=p;
}
void ListDelete_L(LinkList *L,int k)         //删除元素
{
	LinkList *q,*p;
	int i=1;
	q=L;
	p=L->next;
	while(i<k)
	{
		q=q->next;
		p=p->next;
		i++;
	}
	q->next=p->next;
}
void InvertLinkedList(LinkList *L)     //逆置单链表 
{
    LinkList *s,*q;
    s=L->next;
    while(s->next)
    {
        q=s->next;
        s->next=q->next;
        q->next=L->next;
        L->next=q;
    }
}
int main()
{
	int a;
	double b;
	LinkList *L;
	L=new LNode;
    L->next=NULL;
    cout<<"输入元素个数:";
    cin>>a; 
    Createlist_L(L,a);
    cout<<"遍历单链表: ";
	CouteList_L(L);
	for(int k=1;k<4;k++)
	{
		cout<<"输入第"<<k<<"次插入元素和位置:" ;
		cin>>b>>a;
		ListInsert_L(L,b,a);
	}
	cout<<"遍历插入元素后单链表:" ;
	CouteList_L(L);
	cout<<"输入要删除元素位置:";
	cin>>a;
	ListDelete_L(L,a);
	cout<<"遍历删除元素后单链表:" ;
	CouteList_L(L);
	InvertLinkedList(L);
	cout<<"遍历逆置单链表:" ;
	CouteList_L(L);
	return 0;
}


你可能感兴趣的:(单链表)