数据结构之单链表(对单链表的所有操作)
来源:互联网 发布:谷歌 人工智能 编辑:程序博客网 时间:2024/05/16 09:59
#include<stdio.h>#include<malloc.h>typedef struct node{ struct node *next; int num;}Node,*PNode;PNode init_linkList();PNode create_linkList(PNode head);void traversal_linkList(PNode head);int getSize(PNode head);int insert(PNode head,int pos,int val);int rem(PNode head,int pos);int main(){ PNode head = NULL; printf("%p\n",head); head = init_linkList(); printf("%p\n",head); create_linkList(head); traversal_linkList(head); insert(head,2,999); traversal_linkList(head); rem(head,5); traversal_linkList(head);}//初始化链表PNode init_linkList(){ PNode head = NULL; printf("链表初始化开始!\n"); head = (PNode) malloc(sizeof(Node));//头结点 if(head == NULL) { printf("内存分配失败,初始化失败!\n"); } head->next = NULL; printf("链表初始化成功!\n"); return head;}//创建链表PNode create_linkList(PNode head){ PNode tail = NULL;//尾指针,始终指向链表的尾节点 PNode p = NULL; int i ; printf("创建列表开始:\n"); tail = head; printf("请输入一个数字:\n"); while(scanf("%d",&i)!=EOF) { p= (PNode) malloc(sizeof(Node)); p->num=i; tail->next=p; tail=p; tail->next=NULL; printf("请输入一个数字:\n"); } printf("创建列表结束!\n"); return head; }//遍历链表void traversal_linkList(PNode head){ PNode p = NULL; p = head; printf("遍历列表开始:\n"); while(p->next!=NULL) { printf("%d\n",p->next->num); p=p->next; } printf("遍历列表结束!\n");}//在链表中的指定位置插入一个元素int insert(PNode head,int pos,int val){ int i,length; PNode p = head; PNode q = NULL; printf("插入元素开始:\n"); length = getSize(head); if(pos>length+1 || pos<1) { printf("位置错误!\n"); printf("插入元素失败!\n"); return 0; } for(i = 0; i<pos-1; i++) { p=p->next; } if(p==NULL) { printf("位置错误!\n"); printf("插入元素失败!\n"); return 0; } q = (PNode) malloc(sizeof(Node)); q->num=val; q->next = p->next; p->next = q; printf("插入元素成功!\n"); return 1;}//在链表中删除某个位置的元素int rem(PNode head,int pos){ int i,length; PNode p = head; printf("删除元素开始:\n"); length = getSize(head); if(pos>length || pos<1) { printf("位置错误!\n"); printf("删除元素失败!\n"); return 0; } for(i = 0; i<pos-1; i++) { p=p->next; } if(p==NULL) { printf("位置错误!\n"); printf("删除元素失败!\n"); return 0; } p->next=p->next->next; printf("删除元素成功!\n"); return 1;}//获取链表长度int getSize(PNode head){ PNode p = head; int length=0; printf("获取列表长度:\n"); while(p->next!=NULL) { length++; p=p->next; } printf("获取列表长度成功\n"); return length;}
0 0
- 数据结构之单链表(对单链表的所有操作)
- 数据结构之数组(对数组的所有操作!)
- 严蔚敏数据结构单链表的所有基本操作
- 数据结构之链栈的所有操作
- 数据结构之链式队列的所有操作
- 数据结构之对线性表的操作(C语言版)
- 数据结构之对顺序栈的操作(C语言版)
- 数据结构 - C语言版 - 单链表 所有基本操作
- 数据结构之单链表操作
- 数据结构之单链表操作
- 数据结构:单链表(二)之链表节点排序,升序插入数据,删除指定的所有节点,翻转链表操作
- 数据结构之 单链表的实现与操作
- 数据结构之单链表的简单操作
- 数据结构查找之-单链表的基本操作
- 数据结构之单链表的基本操作
- 数据结构之静态循环队列(所有操作)
- 数据结构(5)之单链表的操作(补充)
- c数据结构之单链表操作
- Mark-listview的相关问题---持续更新
- 河南最好治自闭症yiyuan
- 如何成为一位卓越的技术经理?
- 什么是DNS泄漏
- asp.net图片上传步骤
- 数据结构之单链表(对单链表的所有操作)
- android adb server连接不上的问题
- 河南最好治自闭症的yiyuan
- 学习STL过程中的一些零散记录2
- win8.1设置修改权限及重置网络
- 关于AVR单片机熔丝位的设置和拯救方法大全 AVR单片机熔丝位的设置和详细的拯救方法
- 河南最好小儿自闭症yiyuan
- 河南最好儿童自闭症yiyuan
- CSS伪元素,伪类选择器