?? list.c
字號:
//*************************************************************
//順序表的C實現(數據結構+算法)
//
//CreateDate:09/28
//編譯工具VC++6.0
//file name is Tline.c
//*************************************************************
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
typedef int ElemType;
typedef struct seqlist
{
ElemType *data_address;
int listsize,listlength;
}seqlist;
ElemType Getelem(seqlist *L,int pos);
void initlist(seqlist *L,int n);
void Freelist(seqlist *L);
int Emptylist(seqlist *L);
int Fulllist(seqlist *L);
void Insertelem(seqlist *L,int pos,ElemType item);
void Insertrear(seqlist *L,ElemType item);
void Deletelem(seqlist *L,int pos,ElemType item);
void Updataelem(seqlist *L,int pos,ElemType item);
void Clearlist(seqlist *L);
int Locate(seqlist *L,ElemType item);
int Listlength(seqlist *L);
//create all function
void initlist(seqlist *L,int n)
{
L->data_address = (ElemType *)malloc(n*sizeof(ElemType));
if(L->data_address==NULL)
exit(1);
L->listsize = n; //表大小為n
L->listlength = 0; //空表長度為0,(元素個數)
}
void Freelist(seqlist *L)
{ free(L->data_address); }
int Emptylist(seqlist *L)
{
if(L->listlength==0)
return 1;
else
return 0;
}
int Fulllist(seqlist *L)
{
if(L->listlength==L->listsize)
return 1;
else
return 0;
}
//在pos位置插入元素item
void Insertelem(seqlist *L,int pos,ElemType item)
{
int i;
if(Emptylist(L))
{
printf("表元素已滿!");
exit(1);
}
if(pos<1 || pos>L->listlength+1)
{ printf("目標位置不合法!");
exit(1);
}
for(i=L->listlength-1;i>pos;--i)
{ L->data_address[i+1] = L->data_address[i];}
L->data_address[pos] = item;
L->listlength++;
}
void Insertrear(seqlist *L,ElemType item)
{
if(L->listlength==L->listsize)
{
printf("表已滿!");
exit(1);
}
L->data_address[L->listlength] = item;
L->listlength++;
}
void Deletelem(seqlist *L,int pos)
{
int i;
if(Fulllist(L))
{ printf("表為空!");
exit(1);
}
if(pos<0 || pos<L->listlength-1)
{ printf("目標位置不合法!");
exit(1);
}
for(i=L->data_address[pos-1];i<L->listlength-1;++i)
{
L->data_address[i] = L->data_address[i+1];
}
L->listlength--;
}
//獲取pos位置的元素的值
ElemType Getelem(seqlist *L,int pos)
{
if(pos<0 || pos > L->listlength-1)
{ printf("pos位置不合法!");
exit(1);
}
return (L->data_address[pos]);
}
//替換pos位置元素的值
void Updataelem(seqlist *L,int pos,ElemType item)
{
if(pos<0 || pos>L->listlength-1)
{ printf("pos位置不合法!");
exit(1);
}
L->data_address[pos] = item;
}
//清空表元素
void Clearlist(seqlist *L)
{ L->listlength = 0; }
//返回item元素在表中的下標
int Locate(seqlist *L,ElemType item)
{
int i=0;
while(i <= L->listlength-1 && item != L->data_address[i])
i++;
if(i<=L->listlength-1)
return(i);
return(-1); //表中無此元素
}
//求表長,返回表中元素個數
int Listlength(seqlist *L)
{ return(L->listlength); }
void Printlist(seqlist *L)
{
int n,i;
n = Listlength(L);
for(i=0;i<n;++i)
{
printf("%6d",Getelem(L,i));
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
//主程序體
void main(void)
{
int i;
seqlist L;
initlist(&L,51);
srand((unsigned int)time(0));
for(i=0;i<50;++i)
Insertrear(&L,rand()%50);//插入50個元素
printf("表中元素為:\n");
Printlist(&L);
//Deletelem(&L,49);
Printlist(&L);
i=Locate(&L,22);
if(i!=-1)
printf("%d\n",i);
else
printf("22 dose not exist!");
printf("%d\n",Getelem(&L,10));
system("pause");
Freelist(&L);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -