二维码
微世推网

扫一扫关注

当前位置: 首页 » 企业商讯 » 汽车行业 » 正文

线姓表—链式存储结构以及各种基本操作你了解多少?

放大字体  缩小字体 发布日期:2022-03-19 18:41:22    作者:田文豪    浏览次数:313
导读

基本操作:插入,与顺序存储结构不同,链表可以直接在插入结点出进行操作比顺序表更方面,时间复杂度更小删除:链表得基本算法返回当前地址以下是代码#include stdio.h#include stdlib.h#define ERROR 0#define OK 1typedef int Status;typedef int ElemType;typedef struct Node{ElemType data;struct Node *next;}Node;ty

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

删除:链表得基本算法

返回当前地址

以下是代码

#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个元素值:%d\n",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;

}

以前操作基与数据结构。

 
(文/田文豪)
免责声明
• 
本文仅代表发布者:田文豪个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,需自行承担相应责任。涉及到版权或其他问题,请及时联系我们删除处理邮件:weilaitui@qq.com。
 

Copyright©2015-2025 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈