當前位置:編程學習大全網 - 源碼下載 - 來人求救啊~~~實現線性順序表的操作 C語言

來人求救啊~~~實現線性順序表的操作 C語言

#include?<stdio.h>

#include?<stdlib.h>

#include?<time.h>

#define?TRUE?1

#define?FALSE?0

#define?OK1

#define?ERROR?0

#define?INFEASIBLE?-1

#define?OVERFLOW-2

typedef?int?Status;

#define?LIST_INIT_SIZE?100/*初始分配的順序表長度*/

#define?LISTINCREMENT?10?/*溢出時,順序表長度的增量*/

typedef?int?ElemType;?/*定義表元素的類型*/

typedef?struct?Sqlist?{

ElemType?*elem;/*存儲空間的基地址*/

int?length;/*順序表的當前長度*/

int?listsize;?/*當前分配的存儲空間*/

}SqList;

Status?InitList_Sq(SqList?&L)?{?//?算法2.3

//?構造壹個空的線性表L。

L.elem?=?(ElemType?*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

if?(!L.elem)?return?ERROR;//?存儲分配失敗

L.length?=?0;?//?空表長度為0

L.listsize?=?LIST_INIT_SIZE;?//?初始存儲容量

return?OK;

}?//?InitList_Sq

Status?InsertDatum(SqList?&L,?ElemType?x)?{

int?i;

for(i?=?0;?i?<?L.length;++i)?{

if(L.elem[i]?==?x)?{

printf("表中有元素%d,插入失敗。\n",x);

return?ERROR;

}

}

if(L.length?==?L.listsize)?{

L.elem?=?(ElemType?*)realloc(L.elem,(L.listsize?+?LISTINCREMENT)*sizeof(ElemType));

if?(!L.elem)?return?ERROR;

L.listsize?+=?LISTINCREMENT;

}

for(i?=?L.length;?i?>?0;?--i)

L.elem[i]?=?L.elem[i?-?1];

L.elem[0]?=?x;

++L.length;

return?OK;

}

Status?ModifyDatum(SqList?&L,?ElemType?x,?ElemType?y)?{?//?把值x改為y

int?i;

for(i?=?0;?i?<?L.length;?++i)?{

if(L.elem[i]?==?y)?{

printf("位置%d有數據%d。\n",i?+?1,y);

printf("替換失敗!\n");

return?ERROR;

}

}

for(i?=?0;?i?<?L.length;?++i)?{

if(L.elem[i]?==?x)?{

L.elem[i]?=?y;

return?OK;

}

}

printf("表中沒有元素%d,修改失敗。\n",x);

return?ERROR;

}

Status?DeleteDatum(SqList?&L,?ElemType?x)?{

int?i,flag?=?0;

for(i?=?0;?i?<?L.length?&&?!flag;++i)

if(L.elem[i]?==?x)?flag?=?1;

if(flag?==?0?||?L.length?==?0)?{

printf("表中沒有找到元素%!刪除失敗。\n",x);

return?ERROR;

}

for(;?i?<?L.length?-?1;?++i)

L.elem[i]?=?L.elem[i?+?1];

--L.length;

return?OK;

}

int?FindDatum(SqList?&L,?ElemType?x)?{

int?i;

for(i?=?0;?i?<?L.length;?++i)

if(L.elem[i]?==?x)?return?i?+?1;

printf("沒有找到元素%d。\n",x);

return?0;

}

void?Show(SqList?&L)?{

for(int?i?=?0;?i?<?L.length;?++i)?{

if(i%10?==?0)?printf("\n");

printf("%5d",L.elem[i]);

}

printf("\n");

}

void?DestroyList(SqList?&L)?{

if(L.elem)?free(L.elem);

}

int?main()?{

int?i,pos;

ElemType?x,y;

SqList?L;

srand((unsigned)time(NULL));

if(!InitList_Sq(L)) {

printf("初始化未成功。");

return?1;

}

for(i?=?0;?i?<?LIST_INIT_SIZE;?++i)

if(InsertDatum(L,rand()%1000)?==?ERROR)?--i;

Show(L);

printf("請輸入待插入數據?:?");

scanf("%d",&x);

InsertDatum(L,x);

Show(L);

printf("測試替換函數!\n");

printf("請輸入被替換數和替換數?:?");

scanf("%d%d",&x,&y);

ModifyDatum(L,x,y);

Show(L);

printf("請輸入欲查詢數據?:?");

scanf("%d",&x);

pos?=?FindDatum(L,x);

if(pos?!=?-1)?printf("%d在位置%d。\n",x,pos);

Show(L);

DestroyList(L);

return?0;

}

  • 上一篇:Flash交互動畫裏怎麽實現算法?
  • 下一篇:卷網有運費保險嗎?
  • copyright 2024編程學習大全網