Estructura de datos asignación dinámica de experimentos de listas enlazadas

Estructura de datos asignación dinámica de experimentos de listas enlazadas

#include <iostream>
#include <cstdio>
#include <malloc.h>
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct LNode{
int data;
struct LNode *next;
}LNode, *LinkList; 
LinkList chuangjian(int n)
{
LinkList L,p,q;
int i,m;
L =(LinkList) malloc (sizeof(LNode));
q=(LinkList) malloc (sizeof(LNode));
L->next = q;
scanf("%d",&q->data);
for(i=2;i<=n;i++)
{
p=(LinkList) malloc (sizeof(LNode));
scanf("%d",&p->data);
q->next=p;
q=p;
}
q->next = NULL;
    return(L);
}
Status GetElem_L(LinkList L,int i,int &e){
LinkList p;int j;
 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_L(LinkList &L,int i, int e){
LinkList p,s;
p = L; int j=0;
while (p && j<i-1) {p =p->next; ++j;}
if(!p||j>i-1) return ERROR;
s=(LinkList) malloc(sizeof (LNode));
s->data= e; s->next = p->next;
p->next=s;
return OK; 
}
int ListDelete_L(LinkList & L,int i,int &e){
LinkList p, q; 
p= L;  int j=0;
while (p->next && j<i-1){
p=p->next; ++j;
}
if(!(p->next)||j>i-1)  return ERROR;
q=p->next; p->next =q->next;
e= q->data;  free(q);
return  OK; 
}
void printlist(LinkList L)
{  LinkList p;
   p=L;
   p=p->next;
   while (p!=NULL)
   {  printf("%2d", p->data);
      p=p->next;
   }
   printf("\n");
}
int main()
{
int m,n,i,e;
LinkList L;
printf("开始创建一个单链表\n");
printf("输入一个数n表示链表长度,接着输入n个数\n");
scanf("%d",&n);
L=chuangjian(n);
for(;;){
printf("1:查找元素\n");
printf("2:插入元素\n");
printf("3:删除元素\n");
printf("4:输出链表元素\n");
printf("5:结束程序\n");
printf("请输入功能键\n");
scanf("%d",&m);
switch(m)
{
case 1:{printf("请输入你需要查找的是第几个元素\n");
       scanf("%d",&i);
       GetElem_L(L,i,e);
       printf("%d\n",e);
break;
}
case 2:{printf("请输入要插入到第几个单元之前\n");
        scanf("%d",&i);
        printf("输入你要插入的数字\n");
        scanf("%d",&e); 
       ListInsert_L(L,i,e);
       printlist(L);
break;
}
case 3:{ printf("输入需要删除数据的单元\n");
         scanf("%d",&i);
 ListDelete_L(L,i,e);
 printlist(L);
break;
} 
case 4:{printlist(L);
break;
}
case 5:{
break;
}
default: printf("输入功能不正确\n");
}
if(m==5)
break;
}
} 

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44192389/article/details/89425823
Recomendado
Clasificación