C语言实现链表及其操作
2018-06-18 04:10:17来源:未知 阅读 ()
#include <stdio.h> #include <stdlib.h> //定义节点 typedef struct Node { int data; struct Node * PNext; }*PNode,Node; //初始化函数 PNode create_list();//创建节点 //打印出链表 void traverse_list(PNode); //删除节点pos 从1 开始 void delete_node(PNode,int,int *); //插入节点 pos 从1开始 void insert_data(PNode,int ,int ); void main() { //int val; //定义头指针 PNode PHead=NULL; PHead=create_list(); //delete_node(PHead,-1,&val); insert_data(PHead,-2,2); traverse_list(PHead); } PNode create_list() { int len; int i; int val; //定义头节点 PNode PHead=(PNode)malloc(sizeof(Node)); //内存不足等情况会出现分配内存失败的情况 发生错误会返回NULL if(PHead == NULL){ printf("内存分配失败"); } PNode Ptail=PHead; //将头节点的指针域指向NULL 如果没有首节点指针域就是NULL Ptail->PNext=NULL; /* 思路: 定义节点ptail,永远指向尾节点,一开始只有头结点 头结点也是尾节点,所以指向头结点 将新建的PNew节点挂载到ptail节点后面,挂载好之后,ptail指向新建的PNew节点,这样保证ptail永远指向尾节点 */ printf("请输入初始化节点的数量\n"); scanf("%d",&len); for(i=0;i<len;i++){ printf("请输入节点的值"); scanf("%d",&val); PNode PNew=(PNode)malloc(sizeof(Node)); PNew->data=val; Ptail->PNext=PNew; PNew->PNext=NULL; Ptail=PNew; } //返回首节点 return PHead; } void traverse_list(PNode PHead) { PNode p = PHead->PNext; //printf("%d\n",PHead->PNext); if(p == NULL) { printf("链表为空\n"); exit(0); } while(p != NULL){ printf("%d\n",p->data); p=p->PNext; } } void delete_node(PNode PHead,int pos,int * val) { int i=0; if(PHead->PNext==NULL){ printf("节点为空"); exit(0); } if(pos <0){ printf("没有数据"); exit(0); } PNode p=PHead; PNode t; PNode r; while(i != pos){ //printf("%d\n",i=t->data);exit(0); t=p; if(i == pos-1){ //printf("%d\n",i=p->PNext->PNext->data);exit(0); //exit(0); r=p->PNext; t->PNext=p->PNext->PNext; free(r); r=NULL; //exit(0); return; } i++; p=p->PNext; } } void insert_data(PNode PHead,int pos,int val) { int i=0; PNode p=PHead; while(p != NULL && i<pos-1){ p=p->PNext; i++; } if(p == NULL || i>pos -1){ printf("插入错误"); return ; } PNode PNew=(PNode)malloc(sizeof(Node)); if(PNew == NULL){ printf("内存分配失败"); exit(-1); } PNode t=p->PNext; PNew->data=val; PNew->PNext=t; p->PNext=PNew; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Luhn算法检验和验证
下一篇:输出图案类问题的思路
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- leetcode 反转链表 2020-06-06
- C语言程序结构 2020-05-31
- C++冒泡排序 (基于函数模板实现) 2020-05-31
- 数据结构—链表 2020-05-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash