完整代码:
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define INLINKLIST 20
#define LISTMAX 5
typedef int ElemType;
//节点结构
typedef struct node{
ElemType elem;
struct node *next;
}Linklist;
//初始化
Linklist *InitLinklist(){
Linklist *head;
head=(Linklist*)malloc(sizeof(Linklist));
head->next=NULL;
return head;
}
//头插法
Linklist *CreatLinklist(int n){
int i;
Linklist *head,*p;
head=(Linklist*)malloc(sizeof(Linklist));
head->next=NULL;
for(i=0;i<n;i++){
p=(Linklist*)malloc(sizeof(Linklist));
scanf("%d",&(p->elem));
p->next=head->next;
head->next=p;
}
return head;
}
//尾插法
Linklist *Creatlinklist1(int n){
int i;
Linklist *head,*p,*r;
head=(Linklist*)malloc(sizeof(Linklist));
head->next=NULL;
r=head;
for(i=0;i<n;i++){
p=(Linklist*)malloc(sizeof(Linklist));
scanf("%d",&(p->elem));
r->next=p;
r=p;
}
r->next=NULL;
return head;
}
//打印
void PrintLinklist(Linklist *head){
Linklist *p=head->next;
while(p!=NULL){
printf("%d ",p->elem);
p=p->next;
}
}
//插入
int InsertLinklist(Linklist *head,int i,ElemType e){
int j=0;
Linklist *p,*s;
p=head;
if(i<1){
return ERROR;
}
while(j<i-1&&p!=NULL){
p=p->next;
j++;
}
if(p==NULL){
return ERROR;
}
s=(Linklist*)malloc(sizeof(Linklist));
s->elem=e;
s->next=p->next;
p->next=s;
return OK;
}
//删除
int DelectLinklist(Linklist *head,int i,ElemType *e){
int j=0;
Linklist *p,*q;
p=head;
if(i<1){
return ERROR;
}
while(p!=NULL&&j<i-1){
p=p->next;
j++;
}
if(p->next==NULL){
return ERROR;
}
q=p->next;
*e=q->elem;
p->next=q->next;
free(q);
return OK;
}
//倒置
int ConvertLinklist(Linklist *head){
Linklist *p,*q;
p=head->next;
head->next=NULL;
while(p!=NULL){
q=p;
p=p->next;
q->next=head->next;
head->next=q;
}
return OK;
}
int main(void){
Linklist *head;
int n,i;
ElemType e;
scanf("%d %d %d",&n,&i,&e);
InitLinklist();
head=CreatLinklist(n);
InsertLinklist(head,i,e);
DelectLinklist(head,i,&e);
ConvertLinklist(head);
PrintLinklist(head);
return 0;
}
插入:
int InsertLinklist(Linklist *head,int i,ElemType e){
int j=0;
Linklist *p,*s;
p=head;
if(i<1){
return ERROR;
}
while(j<i-1&&p!=NULL){
p=p->next;
j++;
}
if(p==NULL){
return ERROR;
}
s=(Linklist*)malloc(sizeof(Linklist));
s->elem=e;
s->next=p->next;
p->next=s;
return OK;
}
删除:
int DelectLinklist(Linklist *head,int i,ElemType *e){
int j=0;
Linklist *p,*q;
p=head;
if(i<1){
return ERROR;
}
while(p!=NULL&&j<i-1){
p=p->next;
j++;
}
if(p->next==NULL){
return ERROR;
}
q=p->next;
*e=q->elem;
p->next=q->next;
free(q);
return OK;
}
倒置:
int ConvertLinklist(Linklist *head){
Linklist *p,*q;
p=head->next;
head->next=NULL;
while(p!=NULL){
q=p;
p=p->next;
q->next=head->next;
head->next=q;
}
return OK;
}