#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef struct Lnode{
int data; //数据域
struct Lnode *next; //指针域
}Lnode,*Linklist; //*Linklist为Lnode类型的指针
Linklist createListR(void)
{
int i=0;
int ch,N;
Linklist *L=(Linklist)malloc(sizeof(Lnode));//建立表头节点分配存储空间
Lnode *q,*r=L;
printf("请输入%d个整数构建单链表:\n",&N);
for(i=0;i<N;i++)
{
scanf("%d",&ch);
q=(Lnode*)malloc(sizeof(Lnode));
q->data=ch;
r->next=q;
r=q; //插到表末端,让r回到最后一个作为末节点。
}
r->next=NULL;
return L;
}
int ListInsert(Linklist *L,int i,int *e)//单链表的插入在第i个位置插入元素e
{
int j;
Lnode *p;
p=L;
j=0;
while(p&&j<i-1)//遍历并且进行第i-1个位置的查找
{
p=p->next;
++j;
}
if(!p||j>i-1)//如果找不到的话就返回error
{
return ERROR;
}
Lnode *S=(Linklist)malloc(sizeof(Lnode));
S->data=e;
S->next=p->next;
p->next=S;
}
int ListDelete(Linklist *L,int i,int *e)//单链表的删除
{
int j;
Lnode *p,*q;
p=L;
j=0;
while(p->next&&j<i-1)//寻找第i-1个元素
{
p=p->next;
++j;
}
if(!p||j>i-1)//删除位置不合理,找不到元素
{
return ERROR;
}
q=p->next;//删除并释放结点
p->next=q->next;
free(q);
}
int main()
{
Linklist createListR(void);
int i,select;
int *e;
Linklist *L=(Linklist*)malloc(sizeof(Lnode));
printf("宏立:请输入您想完成的操作\n");
printf("插入操作请出入1;删除操作请输入2\n");
scanf("%d",&select);
if(select==1)
{
ListInsert(L,i,e);
}
if(select==0)
{
ListDelete(L,i,e);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
typedef struct Lnode{
int data; //数据域
struct Lnode *next; //指针域
}Lnode,*Linklist; //*Linklist为Lnode类型的指针
Linklist createListR(void)
{
int i=0;
int ch,N;
Linklist *L=(Linklist)malloc(sizeof(Lnode));//建立表头节点分配存储空间
Lnode *q,*r=L;
printf("请输入%d个整数构建单链表:\n",&N);
for(i=0;i<N;i++)
{
scanf("%d",&ch);
q=(Lnode*)malloc(sizeof(Lnode));
q->data=ch;
r->next=q;
r=q; //插到表末端,让r回到最后一个作为末节点。
}
r->next=NULL;
return L;
}
int ListInsert(Linklist *L,int i,int *e)//单链表的插入在第i个位置插入元素e
{
int j;
Lnode *p;
p=L;
j=0;
while(p&&j<i-1)//遍历并且进行第i-1个位置的查找
{
p=p->next;
++j;
}
if(!p||j>i-1)//如果找不到的话就返回error
{
return ERROR;
}
Lnode *S=(Linklist)malloc(sizeof(Lnode));
S->data=e;
S->next=p->next;
p->next=S;
}
int ListDelete(Linklist *L,int i,int *e)//单链表的删除
{
int j;
Lnode *p,*q;
p=L;
j=0;
while(p->next&&j<i-1)//寻找第i-1个元素
{
p=p->next;
++j;
}
if(!p||j>i-1)//删除位置不合理,找不到元素
{
return ERROR;
}
q=p->next;//删除并释放结点
p->next=q->next;
free(q);
}
int main()
{
Linklist createListR(void);
int i,select;
int *e;
Linklist *L=(Linklist*)malloc(sizeof(Lnode));
printf("请输入您想完成的操作\n");
printf("插入操作请出入1;删除操作请输入2\n");
scanf("%d",&select);
if(select==1)
{
ListInsert(L,i,e);
}
if(select==0)
{
ListDelete(L,i,e);
}
return 0;
}