【数据结构】单链表的增删改查
【【数据结构】单链表的增删改查】单链表的增删改查实例:
#include
#include typedef struct LinkedList
{
int elem;
LinkedList * next;
}List,* PList;
PList CreateLinkedList(int size);
void DisplayLinkedList(PList L);
void InsertLinkedList(PList L, int locate, int elem);
void DeleteLinkedList(PList L,int locate);
void main()
{
int size;
PList L;
printf("输入此单链表的大小:");
scanf("%d",&size);
L = CreateLinkedList(size);
// 新建和显示
DisplayLinkedList(L);
printf("\n在位置5插入元素2后\n");
InsertLinkedList(L, 5, 2);
// 插入并显示
DisplayLinkedList(L);
printf("\n删除位置3元素后\n");
DeleteLinkedList(L, 3);
// 删除3并显示
DisplayLinkedList(L);
}PList CreateLinkedList(int size)
{
PList P,L;
L = (PList)malloc(sizeof(List));
L->elem = 0;
L->next = NULL;
P = L;
for (int i = 0;
i < size;
i++)
{
P->next = (PList)malloc(sizeof(List));
// 首先分配空间 然后再赋值
P = P->next;
P->elem = rand()%100;
P->next = NULL;
} return L;
}void DisplayLinkedList(PList L)
{
PList P = L;
while (P->next != NULL)
{
P = P->next;
printf("%d\t",P->elem);
}
printf("\n");
}void InsertLinkedList(PList L, int locate, int elem) // 在 Locate位置上面插入元素 elem
{
PList P = L;
PList Q = NULL;
if (locate != 0)
locate--;
while (P->next != NULL && locate != 0)
{
locate--;
P = P->next;
} if (locate != 0)
printf("\n输入的范围有误\n");
else
{
Q = (PList)malloc(sizeof(List));
// 包含了 在最后插入
Q->elem = elem;
Q->next = P->next;
P->next = Q;
}
}void DeleteLinkedList(PList L,int locate)
{
PList P = L;
PList Q = NULL;
if (locate != 0)
locate--;
while (P->next != NULL && locate != 0)
{
locate--;
P = P->next;
} if (locate != 0)
printf("\n输入的范围有误\n");
else
{
Q = P->next;
P->next = P->next ->next;
free(Q);
}
}
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长