SqList.h
#include<stdio.h>
#include<stdlib.h>
#define MaxSize 100
typedef int ElemType;
//---------------------------------2、3-----------------------
typedef struct
{
ElemType data[MaxSize];
int length;
}SqList;
void InitList(SqList &L)//初始化
{
L.length=0;
}
void DestroyList(SqList L)//销毁表
{ }
void DispList(SqList L)//输出
{
int i;
for(i=0;i<L.length;i++)
{
printf("%d ",L.data[i]);
}
printf("\n");
}
void CreatList(SqList &L,ElemType a[],int n)//键盘输入整体创建表
{
int i,k=0;
printf("请输入想要添加的元素:");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
L.data[k]=a[i];
k++;
}
L.length=k;
}
void Reverse(SqList &L)//元素逆置
{
int i;
ElemType x;
int j=L.length-1;
for(i=0;i<L.length/2;i++)
{
x=L.data[i];
L.data[i]=L.data[j-i];
L.data[j-i]=x;
}
}
void Maxins(SqList &L,ElemType x)//在最大值后插入
{
int i,maxi=0;
for(i=1;i<L.length;i++)
{
if(L.data[i]>=L.data[maxi])
maxi=i;
}
for(i=L.length;i>maxi+1;i--)
{
L.data[i]=L.data[i-1];
}
L.data[maxi+1]=x;
L.length++;
}
//---------------------------5、8---------------------------------------
typedef struct node
{
ElemType data;
struct node * next;
}LNode,* LinkList;
void InitList1(LinkList &L)//初始化
{
L=(LNode * )malloc(sizeof(LNode));
L->next=NULL;
}
void CreateListR(LNode *&L,ElemType a[],int n)//尾插法整体创建单链表
{
LNode *s,*tc;int i;
tc=L;
for(i=0;i<n;i++)
{
s=(LNode *)malloc(sizeof(LNode));
s->data=a[i];
tc->next=s;
tc=s;
}
tc->next=NULL;
}
void DestroyList1(LNode * &L) //销毁表
{
LNode * pre=L,* p=pre->next;
while(p!=NULL)
{
free(pre);
pre=p;
p=p->next;
}
free(pre);
printf("已销毁!\n");
}
void DispList1(LNode * L) //输出单链表
{
LNode * p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int deletex(LNode * &L,ElemType x)//删除第一个值为x的结点
{
LNode *q=L,*p=L->next;
while(p!=NULL&&p->data!=x)
{
q=p;
p=p->next;
}
if(p!=NULL)
{
q->next=p->next;
free(p);
return 1;
}
else
return 0;
}
void Maxins(LNode *&L,ElemType x)//练习题二算法设计第8题
{
LNode *q=L,*p=L->next,*s;
while(p!=NULL&&p->data<=x)
{
q=p;
p=p->next;
}
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
q->next=s;
s->next=p;
}
.cpp
#include<stdio.h>
#include<stdlib.h>
#include"SqList.h"
void main()
{
// SqList L;
// int a[MaxSize];
// InitList(L);
// CreatList(L,a,5);
// printf("表中元素为:");DispList(L);
// Reverse(L);
// printf("逆置后元素为:");DispList(L);
// Maxins(L,4);
// printf("插入后元素为:");DispList(L);
// DestroyList(L);
printf("-------------------------------------\n");
LNode *L;
InitList1(L);
ElemType b[]={1,2,3,4,5,6,7};
CreateListR(L,b,7);
printf("单链表元素为:");DispList1(L);
deletex(L,4);
printf("删除后元素为:");DispList1(L);
Maxins(L,3);
printf("单链表元素为:");DispList1(L);
}
主函数运行时,在使用某个函数是,尽量把其他函数注释掉