单链表的删除操作的实现
#include <stdio.h>
#include <stdlib.h>
typedef struct LinkNode //单链表节点结构的定义
{
int data;
struct LinkNode *next;
}LinkNode;
void InitLinkList(LinkNode * &L)
{
/*单链表的初始化*/
L = (LinkNode*)malloc(sizeof(LinkNode));
L->next = NULL;
}
void CreateLinkList(LinkNode *&L, int n,int *num)
{
/*采用尾插法创建单链表*/
LinkNode* r = L;
for (int i = ; i < n; ++i)
{
LinkNode * p =(LinkNode*)malloc(sizeof(LinkNode));
p->data = num[i];
p->next = r->next;
r->next = p;
r = p;
}
}
void DisList(LinkNode *L)
{
/*单链表的输出*/
LinkNode *l = L->next;
while(l)
{
printf("%d ",l->data);
l = l->next;
}
}
void DelLinkList(LinkNode *&L, int p)
{
/*删除指定参数所代表的节点*/
LinkNode *a = L;
LinkNode *b;
for(int i=;i<p-;i++)
{
a = a->next;
}
b = a->next;
a->next = a->next->next;
free(b);
}
int main(int argc, char const *argv[])
{
/*int n = 5;
int num[]={1,2,3,4,5};*/
int n, p;
int *num;
scanf("%d",&n);
num =(int*)malloc(n*sizeof(int));
for (int i = ; i < n; ++i)
{
scanf("%d",&num[i]);
}
scanf("%d",&p);
/*判断输入值是否合法*/
if(p > n || p < )
{
printf("error!");
return ;
}
LinkNode *L;
InitLinkList(L);
CreateLinkList(L,n,num);
DelLinkList(L,p);
DisList(L);
return ;
}