#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
typedef struct node
{
int data;
struct node *next;
}slink,*ad;
ad createlink(slink *head)
{
slink *p,*s;
int n;
cout<<"输入链表长度:"<<endl;
cin>>n;
p=head=(slink*)malloc(sizeof(slink));
int i;
cout<<"输入链表元素:"<<endl;
for(i=0;i<n;i++)
{
s=(slink*)malloc(sizeof(slink));
scanf("%d",&s->data);
p->next=s;
p=s;
}
p->next=head;
return head;
}
void print(slink *head)
{
slink *p;
for(p=head->next;p!=head;p=p->next)
printf("%d ",p->data);
cout<<"\n";
}
int delete1(slink *head,int i)
{
slink *p;
int j;
for(p=head,j=0;p->next!=head&&j<i-1;j++)
p=p->next;
if(p->next==head||i<1)
{
printf("输入错误!\n");
return -1;
}
slink *q;
q=p->next;
p->next=q->next;
free(q);
return 0;
}
int insert1(slink *head,int i,int e)
{
slink *p;
int j;
for(p=head,j=0;p->next!=head&&j<i-1;j++)
p=p->next;
if((p->next==head&&j!=i-1)||i<1)
{
printf("输入错误!\n");
return -1;
}
slink *q;
q=(slink*)malloc(sizeof(slink));
q->data=e;
q->next=p->next;
p->next=q;
return 0;
}
int main()
{
slink *he;
he=createlink(he);
int i1;
int e1;
int choice;
printf("0-end\n1-print\n2-delete\n3-insert\n");
while(~scanf("%d",&choice))
{
if(choice==0)
break;
else if(choice==1)
print(he);
else if(choice==2)
{
cout<<"输入删除位置:\n";
cin>>i1;
delete1(he,i1);
}
else if(choice==3)
{
cout<<"输入插入位置:\n";
cin>>i1;
cout<<"输入插入元素:\n";
cin>>e1;
insert1(he,i1,e1);
}
}
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交