带头结点
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
//单链表结点的定义
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkedList;
//单链表的初始化
bool InitList(LinkedList &L){
L=(LNode *)malloc(sizeof(LNode));
if(L==NULL) return false;
L->next=NULL;
return true;
}
//头插法建立单链表
LinkedList InsertHead(LinkedList &L){
LNode *s;int x;
L=(LNode *)malloc(sizeof(LNode));
L->next=NULL;
cout<<"请输入要插入的数据(9999为退出):"<<endl;
scanf("%d",&x);
while(x!=9999){
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
cout<<"请输入要插入的数据(9999为退出):"<<endl;
scanf("%d",&x);
}
return L;
}
//尾插法建立单链表
LinkedList InsertTail(LinkedList &L){
LNode *s;int x;
L=(LNode *)malloc(sizeof(LNode));
L->next=NULL;
LinkedList p=L;
cout<<"请输入要插入的数据(9999为退出):"<<endl;
scanf("%d",&x);
while(x!=9999){
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
p->next=s;
p=s;
cout<<"请输入要插入的数据(9999为退出):"<<endl;
scanf("%d",&x);
}
p->next=NULL;
return L;
}
//判断单链表是否为空
bool isEmpty(LinkedList &L){
return L==NULL;
}
//按照位序插入
bool ListInsert(L