单链表的实现过程

单链表主要是以下几个操作:初始化操作,插入操作,删除操作

[cce_cpp]
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<malloc.h>
#define ERROR 0
#define OK 1
#define NULL 0
#define LEN sizeof(struct linkednode)
typedef struct linkednode
{char data;
struct linkednode *next;
}Node,*Link_List;

Link_List create()
{
Link_List L;
Node *p1,*p2;
char data;
L=(Node*)malloc(LEN);
p2=L;
while((data=getchar())!='\n')
{
   p1=(Node*)malloc(LEN);
   p1->data=data;
   p2->next=p1;
   p2=p1;
}
p2->next=NULL;
return L;
}
void printf(Link_List L)
{
Node *p;
p=L->next;
while(p!=NULL)
{printf("%c",p->data);
p=p->next;
}
printf("\n");
}
int ListIn(Link_List L,int i,char x)
{
Node *p,*s;
int k;
p=L;
k=0;
while(p!=NULL&&k<i-1)
{
   p=p->next;
   k++;
}
if(p==NULL||k!=i-1)
{
   printf("插入位置不存在:\n");
   return ERROR;
}
s=(Node*)malloc(sizeof(Node));
s->data=x;
s->next=p->next;
p->next=s;
return OK;
}
int ListDel(Link_List L,int i)
{
Node *p,*r;
int k;
p=L;
k=0;
while(p->next!=NULL && k<i-1)
{
   p=p->next;
   k++;
}
if(p->next==NULL&& k!=i-1)
{
   printf("删除结点位置不合法:\n ");
   return ERROR;
}
r=p->next;
p->next=p->next->next;
free(r);
return OK;
}

main()
{
Link_List L=NULL;
char x;
int del_num,in_num;
system("CLS");
printf("请输入链表结点:\n");
L=create();
printf("请输入插入的结点值及插入位置:\n");
scanf("%c %d",&x,&in_num);
ListIn(L,in_num,x);
printf("插入后的链表:\n");
printf(L);
printf("请输入删除结点位置:\n");
scanf("%d",&del_num);
ListDel(L,del_num);
printf("删除后的链表为:\n");
printf(L);
}
[/cce_cpp]

完成的实现如下

单链表的实现
单链表的实现

发表评论

电子邮件地址不会被公开。 必填项已用*标注