单链表的构造、插入和删除完整程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
print(p);
}
if(m==4){
exit(0);
}
menu(p);
}
main(){
struct LNode *p;
printf("请先建立链表\n");
printf("请输入要输入的元素个数\n");
scanf("%d",&n);
p=MadeList_L(n);
menu(p);
}
struct LNode *c;
c=h->next;
if(c!=NULL)
{
while(c!=NULL)
{
printf("%d ",c->data);
c=c->next;
}
}
else printf("这是一个空表\n");
}
struct LNode* MadeList_L(int n){
int i,j;
scanf("%d",&m);
if(m==1){
printf("请输入插入元素的位置\n");
scanf("%d",&c);
printf("请输入插入的元素\n");
scanf("%d",&y);
if(ListInsert_L(p,c,y)==1){
printf("插入成功\n");
print(p);
q=p->next;p->next=q->next;
e=q->data;free(q);
return 1;
}
int menu(struct LNode *p){
int i,m,c,y,w;
struct LNode *q;
printf(" \n------1:插入元素2:删除元素3:显示链表4:退出链表------\n请输入指令:");
}
else printf("错误!/n");
}
if(m==2){
printf("请输入要删除的元素位置\n");
scanf("%d",&w);
if(ListDelete_L(p,w)==1){
printf("删除成功!\n");
print(p);
}
else printf("删除失败\n");
}
if(m==3){
struct LNode *head,*p,*q;
head=(struct LNode*)malloc(sizeof(struct LNode));
head->next = NULL;
for(i=0;i<n;i++){
p=(struct LNode*)malloc(sizeof(struct LNode));
printf("请输入第%d个元素\n",i+1);
scanf("%d",&j);
p->data=j;
p->next = NULL;
if(i==0){
head->next=p;
}
eBiblioteka Baiduse{
q->next=p;
}
q=p;
}
return head;
}
intListInsert_L(LNode *h,int i,int e){
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct LNode
{int data;
struct LNode *next;
};
int n;
void print(struct LNode *h){
printf("链表中的元素有\n");
struct LNode *p,*s;
int j;
p=h;j=0;
while(p&&j<i-1){
p=p->next;++j;
}
if(!p||j>i-1)return 0;
s=(struct LNode*)malloc(sizeof(struct LNode));
s->data=e;s->next=p->next;
p->next=s;
return 1;
}
int ListDelete_L(LNode *h,int i){
struct LNode *p,*q;
int j,e;
p=h;j=0;
while(p->next&&j<i-1){
p=p->next;++j;
}
if(!(p->next)||j>i-1)return 0;
}
if(m==4){
exit(0);
}
menu(p);
}
main(){
struct LNode *p;
printf("请先建立链表\n");
printf("请输入要输入的元素个数\n");
scanf("%d",&n);
p=MadeList_L(n);
menu(p);
}
struct LNode *c;
c=h->next;
if(c!=NULL)
{
while(c!=NULL)
{
printf("%d ",c->data);
c=c->next;
}
}
else printf("这是一个空表\n");
}
struct LNode* MadeList_L(int n){
int i,j;
scanf("%d",&m);
if(m==1){
printf("请输入插入元素的位置\n");
scanf("%d",&c);
printf("请输入插入的元素\n");
scanf("%d",&y);
if(ListInsert_L(p,c,y)==1){
printf("插入成功\n");
print(p);
q=p->next;p->next=q->next;
e=q->data;free(q);
return 1;
}
int menu(struct LNode *p){
int i,m,c,y,w;
struct LNode *q;
printf(" \n------1:插入元素2:删除元素3:显示链表4:退出链表------\n请输入指令:");
}
else printf("错误!/n");
}
if(m==2){
printf("请输入要删除的元素位置\n");
scanf("%d",&w);
if(ListDelete_L(p,w)==1){
printf("删除成功!\n");
print(p);
}
else printf("删除失败\n");
}
if(m==3){
struct LNode *head,*p,*q;
head=(struct LNode*)malloc(sizeof(struct LNode));
head->next = NULL;
for(i=0;i<n;i++){
p=(struct LNode*)malloc(sizeof(struct LNode));
printf("请输入第%d个元素\n",i+1);
scanf("%d",&j);
p->data=j;
p->next = NULL;
if(i==0){
head->next=p;
}
eBiblioteka Baiduse{
q->next=p;
}
q=p;
}
return head;
}
intListInsert_L(LNode *h,int i,int e){
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct LNode
{int data;
struct LNode *next;
};
int n;
void print(struct LNode *h){
printf("链表中的元素有\n");
struct LNode *p,*s;
int j;
p=h;j=0;
while(p&&j<i-1){
p=p->next;++j;
}
if(!p||j>i-1)return 0;
s=(struct LNode*)malloc(sizeof(struct LNode));
s->data=e;s->next=p->next;
p->next=s;
return 1;
}
int ListDelete_L(LNode *h,int i){
struct LNode *p,*q;
int j,e;
p=h;j=0;
while(p->next&&j<i-1){
p=p->next;++j;
}
if(!(p->next)||j>i-1)return 0;