当前位置: 首页 > 最新文章 > 正文

数据结构模式串的next的用法(数据结构模式串的next的用法)

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

admin

基本操作:插入,与顺序存储结构不同,链表可以直接在插入结点出进行操作比顺序表更方面,时间复杂度更小删除:链表的基本算法返回当前地址以下是代码#include #include #define ERROR 0#define OK 1typedef int Status;typedef int ElemType;typedef struct Node{ElemType data;struct Node *next;}Node;typedef struct Node *LinkList;//表的创建(头插法)void CreateListHead{LinkList p;int i;*L=malloc;(*L)->next=NULL;for{p=malloc;p->data=m[i];p->next=(*L)->next;(*L)->next=p;}}//表的创建(尾插法)void CreateListTail{LinkList p,r;int i;*L=malloc;r=*L;for{p=malloc;p->data=m[i];r->next=p;r=p;}r->next=NULL;}//获取元素的操作Status GetElem{int j;LinkList p;p=L->next;j=1;while{p=p->next;++j;}if(!||j>i){return ERROR;}q=p->next;p->next=q->next;free;return OK;}Status Output{LinkList p;p=L->next;while{printf;p=p->next;}printf;}int main(){LinkList L;int i,k,j,n,e,m[1000];printf;scanf;printf;for{scanf;}CreateListTail;printf;Output;printf;scanf;GetElem;printf;printf;int e1;scanf;ListInsert;printf;Output;printf;int l;scanf;ListDelete;printf;Output;return 0;}以前操作基与数据结构。

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

删除:链表的基本算法

返回当前地址

以下是代码

#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;

}


线性表—链式存储结构以及各种基本操作

以前操作基与数据结构。


上一篇: 寒假作业:四年级数学上册计算训练20套(竖式、脱式、简便计算) 下一篇:【Excel技巧】Replace替换函数的介绍和实例应用
返回顶部