#include<stdio.h>
#include<stdlib.h>
#define maxsize 1024
typedef int datatype;
typedef struct node
{
datatype data;
struct node*next;
}linklist;
int main()
{
return 1;
}
//头插法
linklist*CreatlistF()
{
linklist*p,*head;
char ch;
head = (linklist*)malloc(sizeof(linklist));
head->next = NULL;
while(ch=getchar()!='\n')
{
p=(linklist*)malloc(sizeof(linklist));
p->data=ch;
p->next=head->next;
head->next=p;
}
return head;
}
//尾差法
linklist*CreatlistR()
{
linklist*p,*r,*head;
char ch;
head=(linklist*)malloc(sizeof(linklist));
head->next = NULL;
r=head;
while((ch=getchar())!='\n')
{
p=(linklist*)malloc(sizeof(linklist));
p->data=ch;
r->next=p;
r=p;
}
r->next=NULL;
return head;
}
//按序号查找元素
linklist*locate(linklist*head,int i)
{
linklist*p;
int j=0;
p=head->next;
for(j;p->next!=NULL&&j<i;j++)
{
p=p->next;
}
if(j==i)return p;
else return NULL;
}
//按值查找元素
linklist*locate2(linklist*head,datatype x)
{
linklist*p;
p=head->next;
for(int j=0;p->next!=NULL&&p->data!=x;j++)
{
p=p->next;
}
return p;
}
//插入单链表
void Insert(linklist*head,int i,datatype x)
{
linklist*p,*s;
p = locate(head,i-1);
if(p!=NULL)
{
s=(linklist*)malloc(sizeof(linklist));
s->data=x;
s->next=p->next;
p->next=s;
}
else printf("错误!查找不到目标节点");
}
//单链表的删除
void Delete(linklist*head,int i)
{
linklist*p,*r;
p=locate(head,i-1);
if(p!=NULL&&p->next!=NULL)
{
r=p->next;
p=r->next;
free(r);
}
else printf("错误!找不到目标节点");
}
第二章 线性表.zip
需积分: 0 10 浏览量
更新于2023-10-23
收藏 395KB ZIP 举报
线性表是计算机科学中数据结构的基本概念之一,它是由n(n≥0)个相同类型元素构成的有限序列。在线性表中,元素之间的逻辑关系是一对一的关系,即每个元素都有一个前驱元素和一个后继元素,除了第一个元素没有前驱,最后一个元素没有后继。本章将深入探讨线性表的两种常见实现方式:顺序表和链表,以C++编程语言为载体,通过一系列实例代码进行讲解。
我们来看"单链表.cpp"。单链表是链式存储结构的一种,它的每个节点包含两部分:数据域和指针域。数据域存储元素值,指针域指向下一个节点。单链表的插入、删除操作相对简单,只需要改变相邻节点的指针即可。在"book04503(单链表).cpp"中,可能会包含对单链表的创建、遍历、插入和删除等基本操作的实现。
接着,"顺序表.cpp"涉及到的是顺序表,它是一种用数组实现的线性表。在数组中,元素按照其位置的前后关系顺序存储。顺序表的优点是查询速度快,但插入和删除操作相对较慢,因为可能需要移动大量元素。"顺序表exer.cpp"和"book04504.cpp"可能包含对顺序表的各种操作的练习和实现,如查找、插入、删除以及排序等。
"book04502.cpp"和"book04503.cpp"可能是针对特定问题或场景的线性表应用,例如,可能涉及到特殊的搜索算法或特定类型的排序。而"book04507.cpp"和"book04507.exe"则可能是对某个特定线性表问题的完整解决方案,包括源代码和可执行程序。
在实际应用中,根据需求和性能考虑,我们可能需要在顺序表和链表之间做出选择。例如,如果数据量较小,且操作主要是读取,顺序表可能是更好的选择。反之,如果需要频繁地进行插入和删除操作,单链表则更为合适。此外,"book04505.cpp"等其他未列出的文件可能包含了更多的线性表操作实例或扩展讨论,如双链表、循环链表等。
总结一下,本章的线性表学习涵盖了单链表和顺序表这两种数据结构的原理、操作及其实现。通过这些源代码文件,我们可以深入理解线性表的内部工作原理,提高编程实践能力,为后续更复杂的数据结构和算法学习奠定基础。
贤
- 粉丝: 0
- 资源: 1
最新资源
- 贵阳市五险一金办事指南.docx
- 三亚市五险一金办事指南.docx
- 秦皇岛市五险一金办事指南.docx
- 张北市五险一金办事指南.docx
- 焦作市五险一金办事指南.docx
- Erlang26.2.5.4+RabbitMQ3.13.7及4.0.2
- 通化市五险一金办事指南.docx
- 昆山市五险一金办事指南.docx
- 常熟市五险一金办事指南.docx
- python作业资料代码文件.zip
- java项目,课程设计-springboot学生综合测评系统
- ChristmasTree.html
- 营口市五险一金办事指南.docx
- 济南市五险一金办事指南.docx
- 潍坊市五险一金办事指南.docx
- 晋中市五险一金办事指南.docx