接下来写输出链表函数以及主函数用来检查是否错误
#include<stdio.h>
#include<stdlib.h>
typedef int Status;//函数类型(当return值为函数结果状态时用)需要自定义!
typedef int ElemType;//相当于给 int起个别名
typedef struct Node{
ElemType data;
struct Node *next;//存放元素后继结点的地址
}Node, *LinkList;
//初始化链表
Status IniList(LinkList *L){
*L=(LinkList)malloc(sizeof(Node));//创建头结点,令L指向头结点
(*L)->next=NULL;
return 1;
}
//取链表中的元素
Status GetElem(LinkList L,int i,ElemType *e){
Node *p;
p=L->next;
int j=1;//计数器
while(p&&j<i){
p=p->next;
++j;
}
if(!p||j>1)
return 0;//判断所取位置是否合法
* e=p->data;
return 1;
}
//链表元素的插入
Status ListInsert(LinkList L,int i,ElemType e){
LinkList p,s;
p=L;//指向头结点
int j=0;
while(p&&j<i-1){
p=p->next;
++j;
}
if(!p||j>i-1)
return 0;
s=(LinkList)malloc(sizeof(Node));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
//删除
Status delate(LinkList L,int i){
LinkList p,q;
p=L;
for(int j=0;p&&j<i-1;j++){
p=p->next;
}
q=p->next;//q指向所删除的结点
if(!q)
return 0;
p->next=p->next->next;
free(q);
return 1;
}
//头插法
void CreatList(LinkList L,int n){
LinkList p;
L=(LinkList)malloc(sizeof(Node));
L->next=NULL;//建立一个带头结点的单链表
for(int i=n;i>0;--i){
p=(LinkList)malloc(sizeof(Node));//新结点
printf("请输入该链表的第%d个元素:",i);
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
}
}
//尾插法
void CreatList_L(LinkList L,int n){
LinkList p;
L=(LinkList)malloc(sizeof(Node));
L->next=NULL;//建立一个带头结点的单链表
for(int i=0;i<n;i++){
p=(LinkList)malloc(sizeof(Node));//新结点
printf("请输入该链表的第%d个元素:",i);
scanf("%d",&p->data);
p->next=NULL;
L->next=p;
L=L->next;
}
L->next=NULL;
}
//主函数,判断各种操作是否正确
int main(){
LinkList L,LH;
int n;
int a=IniList(&L);//判断初始化是否成功
}