单链表的初始化、插入、删除——C语言
来源:互联网 发布:flinders大学 知乎 编辑:程序博客网 时间:2024/05/20 09:22
单链表的初始化、插入、删除
#include <stdio.h>#include <stdlib.h> typedef int ElemType; //定义结点类型 typedef struct Node { ElemType data; //单链表中的数据域 struct Node *next; //单链表的指针域 }Node,*LinkedList; //单链表的初始化 LinkedList LinkedListInit() { Node *L; L = (Node *)malloc(sizeof(Node)); //申请结点空间 if(L == NULL) { //判断是否有足够的内存空间 printf("申请内存空间失败\n"); } L->next = NULL; //将next设置为NULL,初始长度为0的单链表 return L;} //单链表的建立1,头插法建立单链表 LinkedList LinkedListCreatH() { Node *L; L = (Node *)malloc(sizeof(Node)); //申请头结点空间 L->next = NULL; //初始化一个空链表 ElemType x; //x为链表数据域中的数据 while(scanf("%d",&x) != EOF) { Node *p; p = (Node *)malloc(sizeof(Node)); //申请新的结点 p->data = x; //结点数据域赋值 p->next = L->next; //将结点插入到表头L-->|2|-->|1|-->NULL L->next = p; } return L; } //单链表的建立2,尾插法建立单链表 LinkedList LinkedListCreatT() { Node *L; L = (Node *)malloc(sizeof(Node)); //申请头结点空间 L->next = NULL; //初始化一个空链表 Node *r; r = L; //r始终指向终端结点,开始时指向头结点 ElemType x; //x为链表数据域中的数据 while(scanf("%d",&x) != EOF) { Node *p; p = (Node *)malloc(sizeof(Node)); //申请新的结点 p->data = x; //结点数据域赋值 r->next = p; //将结点插入到表头L-->|1|-->|2|-->NULL r = p; } r->next = NULL; return L; } //单链表的插入,在链表的第i个位置插入x的元素 LinkedList LinkedListInsert(LinkedList L,int i,ElemType x) { Node *pre; //pre为前驱结点 pre = L; int tempi = 0; for (tempi = 1; tempi < i; tempi++) { pre = pre->next; //查找第i个位置的前驱结点 } Node *p; //插入的结点为p p = (Node *)malloc(sizeof(Node)); p->data = x; p->next = pre->next; pre->next = p; return L; } //单链表的删除,在链表中删除值为x的元素 LinkedList LinkedListDelete(LinkedList L,ElemType x){ Node *p,*pre; //pre为前驱结点,p为查找的结点。 p = L->next; while(p->data != x) { //查找值为x的元素 pre = p; p = p->next; } pre->next = p->next; //删除操作,将其前驱next指向其后继。 free(p); return L;} int main() { LinkedList list,start; printf("请输入单链表的数据:"); list = LinkedListCreatH(); for(start = list->next; start != NULL; start = start->next) { printf("%d ",start->data);} printf("\n"); int i; ElemType x; printf("请输入插入数据的位置:"); scanf("%d",&i); printf("请输入插入数据的值:"); scanf("%d",&x); LinkedListInsert(list,i,x); for(start = list->next; start != NULL; start = start->next) { printf("%d ",start->data);} printf("\n"); printf("请输入要删除的元素的值:"); scanf("%d",&x); LinkedListDelete(list,x); for(start = list->next; start != NULL; start = start->next) { printf("%d ",start->data);} printf("\n"); return 0;}
0 0
- 单链表的初始化、插入、删除——C语言
- C语言实现顺序表的初始化,插入,删除,查找
- c语言 单链表的插入与删除
- c语言单链表的创建、插入、删除
- 线性表c语言实现----初始化插入删除
- 【回忆c语言】从指针的定义初始化到链表的插入删除排序实现code
- C语言实现链表的创建,初始化,插入,删除,查找
- c语言实现线性表的建立,初始化,插入,删除,查找,遍历以及时间复杂度分析
- 链表的初始化、遍历、删除、插入、判断是否为空、求长度 C语言实现
- 单链表初始化、插入、删除
- C语言---单链表的插入、删除、查找操作
- C语言单链表的创建,插入,删除,逆致
- 单链表插入和删除结点c语言的实现
- C语言实现单链表的创建、插入、删除
- 单链表的初始化,建立,插入,查找,删除。
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除
- 单链表的初始化,建立,插入,查找,删除。
- Angular2文档学习的知识点摘要——Angular模块(NgModule)
- Linux查看文件大小的几种方法
- 【寒假任务】 洛谷1093 奖学金
- linux纯文本模式下用mysql进入交互界面时出错mysql: unknown variable 'symbolic-links=0'
- vim产生交换文件
- 单链表的初始化、插入、删除——C语言
- hdu 2002 计算球的体积C语言
- (Mac)myEclipse 更改jre版本
- javascript笔记--(第五章)运算符
- java并发编程实践学习(2)共享对象
- 160 - 1 Acid burn
- 数据结构——树的遍历
- 字符串匹配 & KMP算法
- C语言利用Windows api创建文件打开对话框模板