#include <stdio.h>
#include <string.h>
#define MaxSize 30
#define Error 0
#define True 1
typedef char ElemType
typedef struct
{
ElemType elem[MaxSize]
int length
}SqList/*顺序表类型定义*/
void InitList(SqList * &L) /*初始化顺序表L*/
{
L = (SqList *)malloc(sizeof(SqList))
L ->length = 0
}
void DestroyList( SqList *L ) /*释放顺序表L*/
{
free(L)
}
int ListEmpty( SqList *L )/*判断顺序表L是否为空表*/
{
return( L ->length == 0)
}
int ListLength( SqList *L ) /*返回顺序表L的元素个数*/
{
return( L ->length)
}
void DispList( SqList *L )/*输出顺序表L*/
{
int i
if( ListEmpty(L))
return
for( i = 0i <L ->lengthi++ )
printf("%c", L ->elem[i])
printf("\n")
}
int GetElem( SqList *L, int i, ElemType &e) /*获取顺序表中的第i个元素*/
{
if( i <1 || i >L ->elem[i])
return Error
e = L ->elem[i - 1]
return True
}
int LocateElem( SqList *L, ElemType e) /*在顺序表中查找元素e*/
{
int i = 0
while( i <L ->length &&L ->elem[i] != e)
i++
if(i >= L ->length)
return Error
else
return i+1
}
int ListInsert( SqList * &L, int i, ElemType e) /*在顺序表L中第i个位置插入元素e*/
{
int j
if( i <1 || i >L ->length + 1)
return 0
i-- /*将顺序表位序转化为elem下标*/
for( j = L ->lengthj >ij--)/*将elem[i]及后面元素后移一个位置*/
L ->elem[j] = L ->elem[j - 1]
L ->elem[i] = e
L ->length++ /*顺序表长度增1*/
return True
}
int ListDelete( SqList * &L, int i, ElemType &e) /*顺序表L中删除第i个元素*/
{
int j
if( i <1 || i >L ->length)
return Error
i-- /*将顺序表位序转化为elem下标*/
e = L ->elem[i]
for(j = ij <L ->length - ij++)
L ->elem[j] = L ->elem[j + 1]
L ->length-- /*顺序表长度减1*/
return True
}
void main()
{
SqList *L
ElemType e
printf("(1)初始化顺序表L\n")
InitList(L)
printf("(2)依次采用尾插法插入a,b,c,d,e元素\n")
ListInsert(L, 1, 'a')
ListInsert(L, 2, 'b')
ListInsert(L, 3, 'c')
ListInsert(L, 4, 'd')
ListInsert(L, 5, 'e')
printf("(3)输出顺序表L:")
DispList(L)
printf("(4)顺序表L长度 = %d\n", ListLength(L))
printf("(5)顺序表L为%s\n", (ListEmpty(L) ?"空" :"非空"))
GetElem(L, 3, e)
printf("(6)顺序表L的第3个元素 = %c\n", e)
printf("(7)元素a的位置 = %d\n", LocateElem(L,'a'))
printf("(8)在第4个元素位置上插入f元素\n")
ListInsert(L, 4, 'f')
printf("(9)输出新的顺序表L:")
DispList(L)
printf("(10)删除L的第3个元素\n")
ListDelete(L, 3, e)
printf("(11)输出新的顺序表L:")
DispList(L)
printf("(12)释放顺序表L\n")
DestroyList(L)
}
#include <iostream>
#include <cmath>
using namespace std
//为什么这里不能放在main中?
int main()
{
double x1,y1,x2,y2
cout<<"input (x1,y1) and (x2,y2) :"
cin>>x1>>y1>>x2>>y2
double distance=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))
cout<<distance<<endl
return 0
}
/*环境 microsoft visual c++ */#include<stdio.h>
#include<stdlib.h>
#define OVERFLOW -2
#define ERROR 0
#define ok 1
#define NULL 0
typedef int status
typedef struct lnode
{
int data
struct lnode *next
}lnode,*linklist
void creat(linklist l,int n) //创建n个带头结点的链表。
void travser(linklist l) //输出链表中的data。
status insert(linklist l,int i,int e) //在链表的第i个位置插入新的数据e。
status sort(linklist l) //排序。
int getlength(linklist l) //得到链表的长度。
int listdelete(linklist &l,int i) //在带头结点的单链表l中,删除第i个元素,并返回其值。
void main()
{
linklist l
int i,e,n,length,m
l=(linklist)malloc(sizeof(lnode))
printf("now we should creat a list\nhow many numbers you want to input:")
scanf("%d",&n)
creat(l,n)
travser(l)
while(1){
printf("please choose which function do you need\n0:exit,\n1sort,:\n2:insert,\n3:travser\n4:getlength,\n5:listDelete")
scanf("%d",&m)
/// 0:退出循环,1:排序,2:插入节点,3:显示输出,4:得到链表长度。
switch(m)
{
case 5:printf("what position do you want to delete:")
scanf("%d",&i)
listdelete(l,i)break
case 4:length=getlength(l)
printf("length=%d\n",length)break
case 3:travser(l)break
case 2:printf("please input the number you want to insert:")
scanf("%d",&e)
printf("what position you want to insert:")
scanf("%d",&i)
insert(l,i,e)
travser(l)break
case 1:printf("now will sort:\n")
sort(l)
travser(l)break
case 0:exit(0)break
default:break
}
}
}
void creat(linklist l,int n)
{
int i
linklist p
l->next=NULL
l->data=n
for(i=ni>0i--)
{
p=(linklist)malloc(sizeof(lnode))
printf("please input number:")
scanf("%d",&(p->data))
p->next=l->next
l->next=p
}
}
void travser(linklist l)
{
linklist p
printf("there are %d numbers in list\n",l->data)
p=l->next
printf("list:\n")
while(p)
{
printf("%d ",p->data)
p=p->next
}
printf("\n")
}
status insert(linklist l,int i,int e)
{
int n
linklist s,p
if(i>l->data+1||i<1) return ERROR
s=(linklist)malloc(sizeof(lnode))
s->data=e
p=l
n=0
while(n<i-1)
{
p=p->next
n++
}
s->next=p->next
p->next=s
l->data++
return ok
}
status sort(linklist l)
{
int temp
linklist p,q,r
p=q=r=l
if(p==NULL||p->next==NULL) return ok
for(p=l->nextp->next!=NULLp=p->next)
{
r=p
for(q=p->nextq!=NULLq=q->next)
if(r->data>q->data) r=q
if(r!=p)
{
temp=r->data
r->data=p->data
p->data=temp
}
}
return ok
}
int getlength(linklist l)
{linklist p
int i=0
p=l->next
while(p)
{i++
p=p->next
}
return i
}
int listdelete(linklist &l,int i)
{
int e,j=0
linklist p,q
p=l
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 e
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)