【数据结构】单链表的增删改查

来源:互联网 发布:云计算安全体系架构 编辑:程序博客网 时间:2024/04/28 05:10

单链表的增删改查实例:

#include <stdio.h>#include <stdlib.h>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);}}


0 0
原创粉丝点击