数据结构单链表及插入删除C语言
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构单链表及插入删除C语言
#include
#include
typedef struct LinkLode{
int data;
struct LinkLode* link;
}LinkLode;
int length;
void show(LinkLode* first)
{
first=first->link;
while(first->link!=NULL)
{
printf("%d ",first->data);
first=first->link;
}
printf("%d\n",first->data);
}
LinkLode* newLode(int data)
{
LinkLode *newLode;
newLode=(LinkLode *)malloc(sizeof(LinkLode));
newLode->data=data;
newLode->link=NULL;
return newLode;
}
void createList(LinkLode* first)
{
LinkLode*s1,*s2;
int i=2;
s2=newLode(1);
first->link=s2;
s1=s2;
for(;i<11;i++)
{
s2=newLode(i);
s1->link=s2;
s1=s2;
}
length=10;
s1=first->link;
while(s1->link!=NULL)
{
printf("%d ",s1->data);
s1=s1->link;
}
printf("%d\n",s1->data);
}
void intList(int i,int data,LinkLode* first)
{
LinkLode *s1=first,*s2;
int i2=0;
s2=newLode(data);
if(i>=0&&i<=length)
{
while(i2
{
s1=s1->link;
i2++;
}
s2->link=s1->link;
s1->link=s2;
length++;
printf("插入成功\n");
show(first);
}
else
printf("插入失败\n");
}
void delList(int i,LinkLode* first)
{
LinkLode* s2=first,*s1;
int i1=0;
if(i>0&&i<=length)
{
while(i1
{
s1=s2;
s2=s2->link;
i1++;
}
printf("删除的数为:%d,地址为%p\n",s2->data,s2);
s1->link=s2->link;
free(s2);
length--;
show(first);
}
else
printf("删除失败\n");
}
int main()
{
LinkLode* first;
char c1=NULL,c2;
int i,data;
first = (LinkLode *)malloc(sizeof(LinkLode));
first->data=-10;
first->link=NULL;
createList(first);
while(c1!='s')
{
printf("插入请输入i,删除输入d,停止输入s\n");
scanf("%c",&c1);
if(c1=='i')
{
printf("请输入插入的数据和插入在第几个数后面,以空格隔开\n");
scanf("%d%d",&data,&i);
intList(i,data,first);
c2=getchar();
}
if(c1=='d')
{
printf("请输入删除第几个数据\n");
scanf("%d",&i);
delList(i,first);
c2=getchar();
}
}
return 0;
}