线性表的链式存储结构(完整代码(C语⾔)+运⾏实例)代码如下:
#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;
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];c语言listinsert函数
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);
return0;
}
运⾏实例:
参考⽂献:
《⼤话数据结构》

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。