此方法虽然简单,但是真写起来太复杂了。
/*线性表的链式存储*/
#include<stdio.h>
#include<stdlib.h>
struct Lnode
{
int a;
Lnode *next;
};
/*线性表的初始化*/
void Init_L(Lnode *&L)
{
L=(Lnode*)malloc(sizeof(Lnode));
L->a=0;
L->next=NULL;
}
/*线性表的后插建立*/
void Create_L1(Lnode *&L)
{
int i,j;
printf("输入线性表的个数\n");
scanf("%d",&i);
L->a=i;
Lnode *Node,*N;
N=L;
for(j=1;j<=i;j++)
{
Node=(Lnode*)malloc(sizeof(Lnode));
scanf("%d",&Node->a);
N->next=Node;
N=Node;
}
N->next=NULL;
}
/*线性表的后插建立*/
void Create_L2(Lnode *&L)
{
int i,j;
printf("输入线性表的个数\n");
scanf("%d",&i);
L->a=i;
Lnode *Node=L;
for(j=1;j<=i;j++)
{
Node=(Lnode*)malloc(sizeof(Lnode));
scanf("%d",&Node->a);
Node->next=L->next;
L->next=Node;
}
}
/*线性表的按序号查找*/
int Get_L(Lnode *&L,int num)
{
int i;
Lnode *Node=L;
if(num<1||num>L->a)
return 0;
for(i=1;i<=num;i++)
Node=Node->next;
return Node->a;
}
/*线性表的按序号删除*/
int Delete_L1(Lnode *&L,int num)
{
if(num<1||num>L->a)
return 0;
int i;
Lnode *Node=L;
for(i=1;i<=num-1;i++)
Node=Node->next;
Node->next=Node->next->next;
--L->a;
return 1;
}
/*线性表的按值删除*/
void Delete_L2(Lnode *&L,int num)
{
int i;
Lnode *Node=L;
for(i=1;i<=L->a-1;i++)
if(Node->next->a==num)
{
Node->next=Node->next->next;
--L->a;
}
else
Node=Node->next;
}
/*线性表的插入:按序号前插入*/
void Insert_L(Lnode *&L,int num)
{
int i;
Lnode *Node=L,*N;
for(i=1;i<=num-1;i++)
Node=Node->next;
N=(Lnode*)malloc(sizeof(Lnode));
scanf("%d",&N->a);
N->next=Node->next;
Node->next=N;
++L->a;
}
/*线性表的查找*/
int Locate_L(Lnode *&L,int num)
{
int i;
Lnode* Node=L;
for(i=1;i<=L->a;i++)
{
Node=Node->next;
if(Node->a==num)
return i;
}
}
/*线性表的输出*/
void Print_L(Lnode *&L)
{
int i;
Lnode *Node=L;
for(i=1;i<=L->a;i++)
{
Node=Node->next;
printf("%d ",Node->a);
}
printf("\n");
}
int main()
{
Lnode *L;
/*第一种实现 后插法*/
Init_L(L);
Create_L1(L);
Print_L(L);
printf("%d\n",Get_L(L,3));
printf("%d\n",Locate_L(L,5));
Delete_L1(L,5);
Print_L(L);
Delete_L2(L,4);
Print_L(L);
Insert_L(L,4);
Print_L(L);
/*第二种实现 前插法*/
Init_L(L);
Create_L2(L);
Print_L(L);
printf("%d\n",Get_L(L,3));
printf("%d\n",Locate_L(L,3));
Delete_L1(L,5);
Delete_L2(L,5);
Print_L(L);
Insert_L(L,4);
Print_L(L);
return 0;
}
线性表的链式存储
原创mb64e477779bdae 博主文章分类:数据结构基础 ©著作权
文章标签 线性表 i++ 按序 文章分类 JavaScript 前端开发
-
1.链式存储的线性表——C语言实现
本文是作者学习数据结构过程中在单链表基本运算代码实现时遇到问题并解决问题后的结果
单链表 基本运算 存储结构 代码实现 -
【数据结构】详细剖析线性表
【数据结构】第二章——线性表(9)总结了线性表的基本知识点,并对循序表与链表进行了比较
数据结构 C语言 线性表 顺序表 链表