您好,欢迎来到福步贸易网!
关注我们
service@fubuwang.com
全部产品分类
线姓表—链式存储结构以及各种基本操作_近日最新
   https://www.fubuwang.com 2023-04-20 09:59:55
核心提示:基本操作:插入,与顺序存储结构不同,链表可以直接在插入结点出进行操作比顺序表更方面,时间复杂度更小删除:链表得基本算法返

基本操作:插入,与顺序存储结构不同,链表可以直接在插入结点出进行操作比顺序表更方面,时间复杂度更小

删除:链表得基本算法

返回当前地址

以下是代码

#include <stdio.h>

#include <stdlib.h>

#define ERROR 0

#define OK 1

typedef int Status;

typedef int ElemType;

typedef struct Node{

ElemType data;

struct Node *next;

}Node;

typedef struct Node *linkList;

//表得创建(头插法)

void CreateListHead(linkList *L,int m[],int n){

linkList p;

int i;

*L=(linkList)malloc(sizeof(Node));

(*L)->next=NULL;

for(i=0;i<n;i++){

p=(linkList)malloc(sizeof(Node));

p->data=m[i];

p->next=(*L)->next;

(*L)->next=p;

}

}

//表得创建(尾插法)

void CreateListTail(linkList *L,int m[],int n){

linkList p,r;

int i;

*L=(linkList)malloc(sizeof(Node));

r=*L;

for(i=0;i<n;i++){

p=(Node *)malloc(sizeof(Node));

p->data=m[i];

r->next=p;

r=p;

}

r->next=NULL;

}

//获取元素得操作

Status GetElem(linkList L,int i,ElemType *e){

int j;

linkList p;

p=L->next;

j=1;

while(p&&j<i){

p=p->next;

++j;

}

if(!p|| j>i){

return ERROR;

}

*e=p->data;

return OK;

}

//插入元素得操作

Status ListInsert(linkList *L,int i,ElemType e){

int j;

linkList p,s;

p=*L;

j=1;

while(p&&j<i){

p=p->next;

++j;

}

if(!p||j>i){

return ERROR;

}

s=(linkList)malloc(sizeof(Node));

s->data=e;

s->next=p->next;

p->next=s;

return OK;

}

//删除元素得操作

Status ListDelete(linkList *L,int i){

int j;

linkList p,q;

p=*L;

j=1;

while(p->next&&j<i){

p=p->next;

++j;

}

if(!(p->next)||j>i){

return ERROR;

}

q=p->next;

p->next=q->next;

free(q);

return OK;

}

Status Output(linkList L){

linkList p;

p=L->next;

while(p){

printf("%d ",p->data);

p=p->next;

}

printf("n");

}

int main(){

linkList L;

int i,k,j,n,e,m[1000];

printf("请输入要存储元素得总个数:");

scanf("%d",&n);

printf("请输入各个元素得值:");

for(i=0;i<n;i++){

scanf("%d",&m[i]);

}

CreateListTail(&L,m,n);

printf("此时链表得各元素如下:n");

Output(L);

printf("请输入要获取第j个元素并返回到e值中(输入j得值):");

scanf("%d",&j);

GetElem(L,j,&e);

printf("此时e得值为第j个元素值:%dn",e);

printf("请输入在第k个元素前插入一个元素e1:");

int e1;

scanf("%d%d",&k,&e1);

ListInsert(&L,k,e1);

printf("此时链表得各元素如下:n");

Output(L);

printf("请输入要删除链表中得第几个元素:");

int l;

scanf("%d",&l);

ListDelete(&L,l);

printf("此时链表得各元素如下:n");

Output(L);

return 0;

}

以前操作基与数据结构。

 
举报收藏 0打赏 0评论 0

免责声明:
1.本站部份内容系网友自发上传与公开信息收集转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。版权归属原平台(作者)所有,版权争议与本站无关;
2.秉承互联网开放、包容的精神,福步网欢迎各方(自)媒体、机构转载、引用我们原创内容,但要严格注明来源:福步网
3.我们倡导尊重与保护知识产权,如发现本站文章存在版权问题,烦请将版权疑问、授权证明、版权证明、联系方式等,发邮件至service@fubuwang.com,我们将第一时间核实、处理,谢谢。

 
福步贸易网  |  公司简介  |  意见建议  |  法律申明  |  隐私政策  |  广告投放  |  如何免费信息发布?  |  如何开通福步贸易网VIP?  |  VIP会员能享受到什么服务?  |  怎样让客户第一时间找到您的商铺?  |  如何推荐产品到自己商铺的首页?  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  粤ICP备15082249号 |  m.fubuwang.com