源代码:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define NULL 0
#define OK 1
#define OVERFLOW -2
typedef int ElemType;
typedef int Status;
//-----单链表的存储结构-----//
typedef struct LNode{
ElemType data; //数据域
struct LNode * next; //指针域
}LNode,*LinkList;
void CreastList_L(LinkList &L,int n){
//创建带头结点的单链表L
LNode *p,*q;
int i;
L=(LNode*)malloc(sizeof (LNode));
L->next=NULL; //先建立一个带头结点的单链表
p=L;
for (i=1;i<=n;i++){
q=(LNode*)malloc(sizeof(LNode)); //生成新结点
if(!p) exit(OVERFLOW);
printf("Input the %dth data:",i);
scanf("%d",&q->data); //输入元素值
q->next=NULL;
p->next=q;
p=q;
}
}
Status ListPartDelete_L(LinkList &L,ElemType mink,ElemType maxk){
//删除不减链表L中大于mink小于maxk的元素,删除后并释放这些元素的空间
LNode *p,*q;
p=L; //p最初指向头结点
q=L->next;
while(q!=NULL&&q->data<mink){
p=p->next; q=q->next;
}
if(q==NULL)return OK;
while(q!=NULL&&q->data<=maxk){
p->next=q->next;
free(q);
q=p->next;
}
return OK;
}
void PrintList(LinkList &L){
//输出单链表
LNode *p=L->next;
while(p!=NULL){
printf("%d",p->data);
p=p->next;
}
}
void main(){
int n,mink , maxk;
LinkList La;
printf("Input the list num:");
scanf("%d",&n);
CreastList_L(La,n);
printf("Before Delete the list is: ");
PrintList(La);
printf("\n");
printf("please input the mink :\n ");
scanf("%d",&mink); //输入mink
printf("please input the maxk:\n ");
scanf("%d",&maxk); //输入maxk
ListPartDelete_L(La, mink, maxk);
printf("\nAfter Delete the list is: ");
PrintList(La);
printf("\n");
}
本文介绍了一个C语言实现的单链表应用案例,主要内容包括创建单链表、删除链表中指定范围内的元素及输出链表。通过具体示例展示了如何在单链表中进行元素的管理和操作。
642

被折叠的 条评论
为什么被折叠?



