郝斌数据结构(链表程序代码)
更新时间:2023-05-09 20:48:01 阅读量: 实用文档 文档下载
链表C语言源代码
# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>
typedef struct node
{
int date;//数据域
struct node *pnext;//指针域
}NODE,*PNODE;//NODE等价于struct node ,*PNODE等价于struct node *
PNODE create_list(void)
{
int len;//用来存放有效节点的个数
int i;
int val;//用来临时存放用户输入的节点值 //分配首地址 PNODE phead = (PNODE)malloc(sizeof(NODE)); if(NULL == phead) { printf("内存分配失败,程序终止!\n"); exit(-1); } PNODE ptail = phead; ptail->pnext =NULL; printf("请输入您要创建的链表的节点个数:len = "); scanf("%d",&len); if (0 == len) { printf("您输入的节点个数无效!\n"); } //创建链表 for(i=0;i<len;++i) { printf("请输入第%d个节点的值:",i+1); scanf("%d",&val); PNODE pnew = (PNODE)malloc(sizeof(NODE)); if(NULL == pnew) { printf("内存分配失败,程序终止!\n"); exit(-1); } pnew->date = val; ptail->pnext = pnew; pnew->pnext = NULL; ptail = pnew;
链表C语言源代码
} } return phead;
//输出链表函数
void traverse_list(PNODE phead)
{
PNODE p = phead->pnext;
while (NULL != p)
{
printf("%d ",p->date);
p = p->pnext;
}
printf("\n");
return;
}
//判断链表是否为空链表函数
bool is_empty(PNODE phead)
{
if(NULL == phead->pnext)
return true;
else
return false;
}
//判断链表长度函数
int length_list(PNODE phead)
{
int len =0;
PNODE p =phead->pnext;
while (NULL != p)
{
++len;
p = p->pnext;
}
return len;
}
//在phead所指向链表的第pos个节点的前面插入一个新的节点,该节点的值是val,并且pos的值从1开始
bool insert_list(PNODE phead,int pos,int val)
{
int i = 0;
PNODE p = phead;
链表C语言源代码
{ p = p->pnext; ++i; } if (i>pos-1 || NULL == p) return false; PNODE pnew = (PNODE)malloc(sizeof(NODE)); if (NULL == pnew) {
printf("动态分配内存失败!\n");
exit(-1);
}
pnew->date = val;
PNODE q = p->pnext;
p->pnext = pnew;
pnew->pnext = q;
return true;
}
//链表的删除
bool delete_list(PNODE phead,int pos,int *pval)
{
int i = 0;
PNODE p = phead;
while (NULL!=p->pnext && i<pos-1)
{
p = p->pnext;
++i;
}
if (i>pos-1 || NULL==p->pnext)
return false;
PNODE q = p->pnext;
*pval = q->date;
//删除p节点后面的结点
p->pnext = p->pnext->pnext;
free(q);
q = NULL;
return true;
}
//链表排序
void soert_list(PNODE phead)
{
int i,j,t;
链表C语言源代码
int len = length_list(phead);
PNODE p,q;
for(i=0,p = phead->pnext;i<len-1;++i,p = p->pnext)
{
for(j = i+1,q = p->pnext;j<len;++j,q = q->pnext)
{
if(p->date > q->date)
{
t = p->date;
p->date = q->date;
q->date = t;
}
}
}
return;
}
int main(void)
{
PNODE phead = NULL;//等价于struct node *phead=NULL
int val;
phead = create_list();//create_list()函数功能:创建一个非循环单链表,并且将该链表的头节点的地址付给phead
traverse_list(phead);
if(is_empty(phead))
} printf("链表为空!\n"); else printf("链表不为空!\n"); int len = length_list(phead); printf("链表长度为%d\n",len); soert_list(phead); traverse_list(phead); insert_list(phead,4,33); if(delete_list(phead,4,&val)) { printf("删除成功,您删除的元素是:%d\n",val); } else { printf("删除失败!您删除的元素不存在!\n"); } return 0;
正在阅读:
郝斌数据结构(链表程序代码)05-09
中学教师公租房项目施工招标文件12-13
魏晋南北朝诗歌中的月亮意象05-19
郑州大学2013-2015考研复试分数线07-11
医院上半年卫生计生工作总结03-12
红歌大合唱02-19
善变的风作文500字06-24
国家社科基金项目申请书-成功样本07-10
中国地震灾害与防震减灾论文03-21
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 郝斌
- 数据结构
- 代码
- 程序
- 中国国际收支平衡表时间序列数据
- 2020年教师年度考核个人工作总结
- 某品牌运动鞋调研报告分析1
- 南京继续教育参考答案--深入学习贯彻习总书记关于安全生产的重要论述,筑牢安全生产防线
- 国旗下讲话稿——珍惜时间好读书
- 北师大版六年级数学下册圆锥的体积教学设计
- SBS改性沥青防水卷材施工技术交底__SBS改性沥青防水卷材施工工艺
- 冀教版小学数学三年级下册第六单元教材过关试题附答案
- 苏教版七年级英语月考试卷
- 人教版-音乐-四年级下册-四年级下册音乐教案-《苗岭的早晨》
- 无源RFID标签芯片的低功耗电源管理系统
- 第六章 IP路由协议
- 将军中学七年级思想品德期中考试试题
- 手机环境可靠性试验面临的挑战和解决方法
- 广东省深圳高级中学10-11学年高二上学期期中考试(理数)
- 有理数加减法基础测试题
- 19.1.2函数图象(第一课时)
- 中国旅游地理B卷试题及答案
- 桂枝麻黄各半汤加味治疗胆碱能性荨麻疹45例
- 初级培训填空题+名词解释(双)