数据结构模式串的next的用法(数据结构模式串的next的用法)
基本操作:插入,与顺序存储结构不同,链表可以直接在插入结点出进行操作比顺序表更方面,时间复杂度更小删除:链表的基本算法返回当前地址以下是代码#include #include #define ERROR 0#define OK 1typedef int Status;typedef int ElemType;typedef struct Node{ElemType data;struct Node
基本操作:插入,与顺序存储结构不同,链表可以直接在插入结点出进行操作比顺序表更方面,时间复杂度更小删除:链表的基本算法返回当前地址以下是代码#include 基本操作:插入,与顺序存储结构不同,链表可以直接在插入结点出进行操作比顺序表更方面,时间复杂度更小 删除:链表的基本算法 返回当前地址 以下是代码 #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; } 以前操作基与数据结构。