代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode {
int data;
struct LNode* next;
}LNode,*LinkNode;
//初始化
int InitLinkNode(LinkNode* L) {
*L = (LNode*)malloc(sizeof(LNode));
(*L)->next = NULL;
return 1;
}
//尾插法
int BottomLinkNode(LinkNode L, int n)
{
LNode* s;
int i = 0;
s = L;
int x = 0;
for (i = 0; i < n; i++)
{
LNode* p = (LNode*)malloc(sizeof(LNode));
scanf_s("%d",&x);
p->data = x;
p->next = NULL;
s->next = p;
s = p;
}
s->next = NULL;
return 1;
}
//删除
int DeleteLinkNode(LinkNode L,int i,int*e)
{
LNode*p, *q;
p = L;
int j = 0;
while (p->next && j < i - 1)
{
p = p->next;
j++;
}
if (!p || j > i - 1)
{
printf("error");
}
q = p->next;
*e = q->data;
p->next = q->next;
free(q);
return 1;
}
//查找取值
int GetElemLinkNode(LinkNode L,int i,int *e)
{
LNode* p;
p = L;
int j;
for (j = 0; j < i && p != NULL; j++)
{
p = p->next;
}
*e = p->data;
printf("查找元素的值为:%d",*e);
printf("\n");
return 1;
}
//插入
int insert(LNode* L, int i, int x)
{
LNode* p, * q;
int j = 0;
p = L;
while (j < i - 1 && p->next!=NULL) //到i-1个元素
{
p = p->next; j++;
}
if (j == i - 1)
{
q = (LNode*)malloc(sizeof(LNode));
q->data = x;
q->next = p->next;
p->next = q;
}
return 1;
}
//输出单链表
void creat(LNode*L)
{
LNode* list = L->next;
while (list != NULL) {
printf("%d ", list->data);
list = list->next;
}
printf("\n");
}
int main()
{
LinkNode L;
InitLinkNode(&L);
BottomLinkNode(L,5);
creat(L);
int e = 0;
GetElemLinkNode(L,3,&e);
DeleteLinkNode(L, 3, &e);
creat(L);
insert(L,2,100);
creat(L);
return 0;
}
运行结果如下: