SWUST OJ(953)

时间:2023-03-09 15:12:13
SWUST OJ(953)

单链表的删除操作的实现

 #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 ;
}