当前位置:文档之家› 数据结构循环链表插入和删除源代码代码

数据结构循环链表插入和删除源代码代码

switch(choice)
{
case 1:
{
printf("请输入插入元素的位置:");
scanf("%d",&i);
if(i<=0||i>n)
printf("您输入的值不合法");
else
printf("请输入插入元素的值:");
scanf("%d",&e);
L=ListInsert_L(L,i,e);
{
CrLinklist P,S;
int j;
P=L;
j=0;
while(P->next&&j<i-1)
{
P=P->next;
++j;
}//寻找第个节点,并令P指向其前驱
if(!(P->next)||j>i-1)
return ERROR;
S=P->next;
P->next=S->next;//删除并释放节点
typedef struct LNode//结点类型
{
int data;//数值域
struct LNode *next;//指针域
}CrLNode,*CrLinklist;
#include"Base.h"
#include"construct.h"
#include"circulate_operation.c"
printlist_L(L);
};break;
}
}
CrLinklist Initlist_L(int n)//创建带头结点的单链表
{
CrLinklist L;
CrLinklist P;
int i;
L=(CrLinklist)malloc(sizeof(CrLNode));
L->next=L;/*先建立一个带头结点的单链表*/
free(S);
return L;
}
void printlist_L(CrLinklist L)//输出单链表
{
CrLinklist P;
P=L;
while(P->next!=L)
{
P=P->next;
printf("%5d",P->data);
}
printf("\n");
}
/* Base.h (程序名) */
return ERROR;
S=(CrLinklist)malloc(sizeof(CrLNode));//生成新节点
S->data=e;
S->next=P->next;//插入到S中
P->next=S;
return L;
}
CrLinklist ListDelete_L(CrLinklist L,int i)//单链表的删除
printf("插入后的链表为:");
printlist_L(L);
};break;
case 2:
{
printf("请输入删除元素的位置:");
scanf("%d",&i);
if(i<=0||i>n)
printf("您输入的值不合法");
else
L=ListDelete_L(L,i);
printf("删除后的链表为");
#include<string.h>
#include<ctype.h>
#include<malloc.h> /* malloc()等*/
#include<limits.h> /* INT_MAX等*/
#include<stdio.h> /* EOF(=^Z或F6),NULL */
#include<stdlib.h> /* atoi() */
#define ERROR 0
#define INFEASIBLE -1
/* #define OVERFLOW -2因为在math.h中已定义OVERFLOW的值为3,故去掉此行*/
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等*/
typedef int Boolean; /* Boolean是布尔类型,其值是TRUE或FALSE */
int main()
{
CrLinklist L;
int i,choice,n,e;
printf("请输入链表元素个数:");
scanf("%d",&n);("请选择执行语句,选择输入1,执行插入操作或选择输入2,执行删除操作:");
scanf("%d",&choice);
#include<io.h> /* eof() */
#include<math.h> /* floor(),ceil(),abs() */
#include<process.h> /* exit() */
/*函数结果状态代码*/
#define TRUE 1
#define FALSE 0
#define OK 1
printf("请输入%d个数据\n",n);
for(i=n;i>0;--i)
{
P=(CrLinklist)malloc(sizeof(CrLNode)); /*生成新结点*/
scanf("%d",&P->data); /*输入元素值*/
P->next=L->next; /*插入到表头*/
L->next=P;
}
return L;
}
CrLinklist ListInsert_L(CrLinklist L,int i,int e)//单链表的插入
{
CrLinklist P,S;
int j;
P=L;
j=0;
while(P&&j<i-1)
{
P=P->next;
++j;
}//寻找第i-1个节点
if(!P||j>i-1)
相关主题