输入格式:
读入n及n个整数。
输入要删除元素的位置
输出格式:
输出插入元素后的链表,以空格分隔(最后一个数的后面没有空格)。
输出被删除的元素值
#include<stdio.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
LinkList ListCreat()
{
LinkList L,tail,p;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
tail=L;
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{
p=(LinkList)malloc(sizeof(LNode));
p->next=NULL;
scanf("%d",&p->data);
tail->next=p;
tail=p;
}
return L;
}
LinkList ListDelete(LinkList L,int i)
{
LinkList p;
p=L;
int j=0;
while(p!=NULL&&j<i-1)
{
p=p->next;
j++;
}
LinkList q;
q=p->next;
int x;
x=q->data;
p->next=q->next;
free(q);
return x;
}
void Print(LinkList L)
{
LinkList p;
p=L->next;
int k=0;
while(p)
{
k++;
if(k==1)
{
printf("%d",p->data);
}
else
{
printf(" %d",p->data);
}
p=p->next;
}
printf("\n");
}
int main()
{
LinkList L;
L=ListCreat();
int i;
scanf("%d",&i);
int x;
x=ListDelete(L,i);
Print(L);
printf("%d",x);
return 0;
}
输入样例:
5
1 2 3 4 5
3
运行结果如下: