对 带头结点的单链表 的操作
//带头结点的单链表
#include<iostream>
using namespace std;
typedef struct student
{
int data;
struct student *next;
}node;
node * creat() //创建单链表
{
node *head,*p,*s;
int x,cycle=1;
head=(node *)malloc(sizeof(node));
p=head;
while(cycle)
{
cout<<"请输入一直不为0的数,输入0则结束"<<endl;
cin>>x;
if(x!=0)
{
s=(node *)malloc(sizeof(node));
s->data=x;
p->next=s;
p=s;
}
else cycle=0;
}
p->next=NULL;
return head;
}
int listLength(node *head) //单链表的测长
{
int i=0;
node *p=head;
p=head;
do
{
p=p->next;
i++;
}while(p->next!=NULL);
return i;
}
void printList(node *head) //打印单链表
{
node *p=head->next;
int len=listLength(head);
for(int i=0;i<len;i++)
{
cout<<p->data<<endl;
p=p->next;
}
}
node * deleteNode(node *head,int e) //删除单链表的结点
{
node *p1,*p2;
p1=head->next;
while(p1->data!=e && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(e==p1->data)
{
if(p1==head->next)
{
head->next=p1->next;
free(p1);
}
else
{
p2->next=p1->next;
free(p1);
}
}
else
cout<<"未找到结点的数据域值为:"<<e<<"的结点"<<endl;
return head;
}
node * insert(node *head,int e) //链表插入一个结点
{
node *p1,*p2,*s;
p1=head->next;
s=(node *)malloc(sizeof(node));
s->data=e;
while(s->data > p1->data && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(s->data < p1->data)
{
if(p1==head->next)
{
s->next=p1;
head->next=s;
}
else
{
s->next=p1;
p2->next=s;
}
}
else
p1->next=s;
s->next=NULL;
return head;
}
int main()
{
node *head;
head=creat();
printList(head);
head=insert(head,3);
printList(head);
return 0;
}
转载于:https://www.cnblogs.com/this-543273659/archive/2011/08/03/2126157.html
对 带头结点的单链表 的操作相关推荐
- 带头结点的单链表的操作(C语言)
初始化 先了解头结点 头结点是一个特殊的结点,它的数据域不存储信息,通常情况下,头指针指向的结点为头结点,由于头结点不存储信息,所以不是数据结构中的实际结点,第一个实际结点其实是head->ne ...
- 带头结点的单链表删除操作 (10 分)
本题要求实现删除单链表的第i个元素结点,删除成功返回1,否则返回0. 函数接口定义: int delete_link ( LinkList L,int i); L为单链表的头指针,i为删除结点的序号. ...
- 【C站水库】带头结点的单链表的操作
题目: 代码: #include<bits/stdc++.h> #define ph print(head) using namespace std; struct node{int va ...
- c语言实现--不带头结点的单链表操作
1,不带头结点的单链表操作中,除了InitList(),GetElem(),ListInsert(),ListDelete()操作与带头结点的单链表有差别外,其它的操作基本上一样. 2,不带头结点单链 ...
- 不带头结点的单链表操作
不带头结点的单链表操作,包括插入.遍历.统计结点数等,要求写出数据结构算法思想及C语言实现函数 本文为博主原创文章,未经博主允许不得转载. 版权为陈博超所有,第一次于2021年06月22日发表于BLO ...
- 带头结点的单链表的逆置
代码 //带头结点的单链表逆置.cpp #include<iostream> using namespace std; struct Node{ int data; Node* next; ...
- 【C语言】数据结构C语言版 实验3 带头结点的单链表
slnklist.h #include <stdio.h> #include <stdlib.h> /************************************* ...
- python实现带头结点的单链表的就地逆置_6-1 带头结点的单链表就地逆置 (10 分)...
本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...
- 带头结点的单链表的初始化,建立,插入,查找,删除
//带头结点的单链表的初始化,建立,插入,查找,删除 #include <stdio.h> #include <stdlib.h> typedef int El ...
最新文章
- (0063)iOS开发之SVN server的搭建
- android test.apk,app-debug.apk和app-debug-androidTest.apk在安装macaca-android模块的时候build失败...
- 关于arm-linux-gcc的安装与配置
- Linux命令修复方法,在Linux终端运行sudoedit -s /命令看未修复和已修复的效果
- 扎实的基础是成功的法宝
- BatchNorm中forward未被调用原因
- 用户管理实用命令(第二版)
- CNN中全连接层是什么样的
- Uploadify jquery+flash+UploadHandler.ashx .(用)
- java冒泡排序_Java专题(二):Java中常见的排序算法有哪些?---冒泡排序
- 关于Java浮点数运算精度丢失问题
- Oracle 多表查询
- 使用FlashFTP上传文件到指定服务器
- Windows修改键盘映射
- 全局最小割集Stoer-Wagner算法
- Excel 绘制 人口年龄结构树状图
- oracle物理备份与恢复,ORACLE数据库备份与恢复详解
- JPEG文件二进制格式分析
- java 数字拆分_如何在java中分割数字?
- 计算机毕业设计ssm东湖爱心系统的众筹设计和实现t4a84系统+程序+源码+lw+远程部署