当前位置:文档之家› 单链表的创建、插入和删除

单链表的创建、插入和删除

单链表的创建、插入和删除
(数据结构)

——SVS
#include
#include
#include

typedef int ElemType;
typedef int Status;

typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;

void InitList_Link(LinkList L) //创建空链表
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
}

Status InsertList_Link(LinkList L,int i,ElemType e) //插入链表
{
LinkList s,p=L;
int j=0;
while(p&&jnext;j++;}
if(!p||j>i-1)return -1;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return 1;
}
Status DeleteList_Link(LinkList L,int i,ElemType e) //删除链表
{
LinkList q,p=L;int j=0;
while(p->next&&jnext;j++;}
if(!(p->next)||j>i-1)return -1;
q=p->next;
e=q->data;
p->next=q->next;
free(q);
return 1;
}

void OutPutList_Link(LinkList L) //输出链表
{
printf("表中值为:");
LinkList p=L->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}

void CreateList_Link(LinkList L,int len) //创建链表
{
int i;
LinkList s,p=L;
for(i=0;i{
s=(LinkList)malloc(sizeof(LNode));
printf("N%d: ",i+1);
scanf("%d",&s->data);
s->next=NULL;
p->next=s;
p=s;
}
}
int main()
{
int len;
LinkList L;
ElemType e;
L=(LinkList)malloc(sizeof(LNode));
printf("请输入表长: ");
scanf("%d",&len);

CreateList_Link(L,len);
OutPutList_Link(L);
/*插入*/
int num1;
int num2;
printf("请输入要插入元素的位置:");
scanf("%d",&num1);
printf("请输入要插入的元素:");
scanf("%d",&num2);
InsertList_Link(L,num1,num2);
printf("插入后 :");
OutPutList_Link(L);

int a;
int b=0;
printf("请输入要删除元素的位置:");
scanf("%d",&a);
DeleteList_Link(L,a,b);
printf("删除后:");
OutPutList_Link(L);

}

相关主题