日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

c语言创建空顺序表的程序,C语言实现顺序表的创建与增删改查操作

發(fā)布時(shí)間:2023/12/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言创建空顺序表的程序,C语言实现顺序表的创建与增删改查操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SqListDemo.c

/* 線性表的順序存儲(chǔ)實(shí)現(xiàn) */

#include

#include

#include

// 定義符號(hào)常量

#define LIST_INIT_SIZE 50

#define LISTINCREMENT 10

#define OK 1

#define ERROR 0

#define OVERFLOW -2

// 定義元素類(lèi)型

typedef int ElemType;

// 定義順序表類(lèi)型

typedef struct {

ElemType *elem; // 順序表元素

int length; // 順序表長(zhǎng)度

int listsize; // 順序表存儲(chǔ)容量

} SqList;

// 構(gòu)造空順序表

int InitList(SqList *L)

{

// 獲取順序表基址

L->elem = (ElemType *) malloc(sizeof(ElemType));

// 存儲(chǔ)空間分配失敗

if (!L->elem) return ERROR;

// 空表長(zhǎng)度為0

L->length = 0;

// 分配給空表的存儲(chǔ)容量

L->listsize = LIST_INIT_SIZE;

// 初始化成功

return OK;

}

// 獲取順序表第i個(gè)元素

ElemType GetListElem(SqList *L, int i)

{

// 檢查i的合法性

if (i < 1 || i > L->length)

return ERROR;

else

return L->elem[i-1];

}

// 定位目標(biāo)元素在順序表中位置

int LocateListElem(SqList *L, ElemType e)

{

int i = 1;

// 定義指針p,指向第一個(gè)元素

ElemType *p = L->elem;

// 目標(biāo)元素依次與順序表元素比較

while (*p != e && i <= L->length)

{

i++;

p++;

}

if (i > L->length)

return 0;

else

return i;

}

// 在順序表第i個(gè)位置插入元素

int InsertListElem(SqList *L, int i, ElemType e)

{

int k;

// 位置合法性判斷

if (i < 1 || i > L->length + 1) return ERROR;

// 順序表空間滿,按增量重新分配

if (L->length >= L->listsize)

{

// 增加LISTINCREMENT個(gè)元素元素,獲取順序表新基址

L->elem = (ElemType *)realloc(L->elem, (L->listsize + LISTINCREMENT) * sizeof(ElemType));

if (!L->elem) return ERROR;

// 按增量修改存儲(chǔ)空間大小

L->listsize += LISTINCREMENT;

}

// 元素后移1位

for (k = L->length - 1; k >= i - 1; k--)

L->elem[k + 1] = L->elem[k];

// 插入元素

L->elem[i-1] = e;

// 順序表長(zhǎng)度加1

L->length++;

// 插入成功

return OK;

}

// 刪除順序表第i個(gè)元素

int DeleteListElem(SqList *L, int i)

{

int k;

// 判斷位置合法性

if (i < 1 || i >L->length) return ERROR;

// 元素前移1位

for (k = i; k <= L->length; k++)

L->elem[k-1] = L->elem[k];

// 順序表長(zhǎng)度減1

L->length--;

// 刪除成功

return OK;

}

// 修改順序表第i個(gè)元素

int UpdateListElem(SqList *L, int i, ElemType e)

{

// 判斷位置合法性

if (i < 1 || i >L->length) return ERROR;

// 修改第i個(gè)元素值

L->elem[i-1] = e;

// 修改成功

return OK;

}

// 輸出順序表全部元素

void PrintList(SqList *L)

{

int i;

if (L->length == 0)

printf("\n順序表為空!\n\n");

else

for (i = 1; i <= L->length; i++)

printf("%d ", L->elem[i-1]);

printf("\n");

}

int main()

{

int i, choice, position;

ElemType data, elem;

int isRunning = 1;

SqList *pl = (SqList *)malloc(sizeof(SqList));

while(isRunning)

{

printf("======順序表操作演示=======\n");

printf("1. 創(chuàng)建一個(gè)空的順序表\n");

printf("2. 輸出順序表的全部數(shù)據(jù)\n");

printf("3. 查詢順序表某個(gè)位置的數(shù)據(jù)\n");

printf("4. 查詢數(shù)據(jù)在順序表中的位置\n");

printf("5. 向順序表指定位置插入數(shù)據(jù)\n");

printf("6. 刪除順序表指定位置的數(shù)據(jù)\n");

printf("7. 更新順序表指定位置的數(shù)據(jù)\n");

printf("8. 退出順序表操作演示程序\n");

printf("===========================\n");

printf("\n輸入1-8,選擇所需功能號(hào):");

scanf("%d", &choice);

printf("\n您選擇的功能號(hào)為:%d\n", choice);

switch(choice)

{

case 1:

if (InitList(pl))

printf("\n順序表創(chuàng)建成功!\n\n");

else

printf("\n順序表創(chuàng)建失敗!\n\n");

system("pause");

break;

case 2:

PrintList(pl);

system("pause");

break;

case 3:

printf("i=");

scanf("%d", &i);

elem = GetListElem(pl, i);

if (elem)

printf("L[%d]=%d\n\n", i, elem);

else

printf("輸入的位置不合法!");

system("pause");

break;

case 4:

printf("data=");

scanf("%d", &data);

position = LocateListElem(pl, data);

if (position)

printf("%d is at [%d] of the list.\n\n", data, position);

else

printf("%d is not in the list.\n\n", data);

system("pause");

break;

case 5:

printf("i,data=");

scanf("%d,%d", &i, &data);

if (InsertListElem(pl, i, data))

printf("\n數(shù)據(jù)插入成功!\n\n");

else

printf("\n數(shù)據(jù)插入失敗!\n\n");

system("pause");

break;

case 6:

printf("i=");

scanf("%d", &i);

if (DeleteListElem(pl, i))

printf("\n數(shù)據(jù)刪除成功!\n\n");

else

printf("\n數(shù)據(jù)刪除失敗!\n\n");

system("pause");

break;

case 7:

printf("i,data=");

scanf("%d,%d", &i, &data);

if (UpdateListElem(pl, i, data))

printf("\n數(shù)據(jù)更新成功!\n\n");

else

printf("\n數(shù)據(jù)更新失敗!\n\n");

system("pause");

break;

case 8:

isRunning = 0;

break;

}

}

printf("\n謝謝使用本程序~");

return 0;

}

運(yùn)行結(jié)果如下:

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):1

您選擇的功能號(hào)為:1

順序表創(chuàng)建成功!

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):5

您選擇的功能號(hào)為:5

i,data=1,100

數(shù)據(jù)插入成功!

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):5

您選擇的功能號(hào)為:5

i,data=2,300

數(shù)據(jù)插入成功!

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):5

您選擇的功能號(hào)為:5

i,data=2,250

數(shù)據(jù)插入成功!

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):5

您選擇的功能號(hào)為:5

i,data=2,140

數(shù)據(jù)插入成功!

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):2

您選擇的功能號(hào)為:2

100 140 250 300

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):3

您選擇的功能號(hào)為:3

i=3

L[3]=250

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):4

您選擇的功能號(hào)為:4

data=250

250 is at [3] of the list.

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):4

您選擇的功能號(hào)為:4

data=1000

1000 is not in the list.

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):6

您選擇的功能號(hào)為:6

i=3

數(shù)據(jù)刪除成功!

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):2

您選擇的功能號(hào)為:2

100 140 300

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):7

您選擇的功能號(hào)為:7

i,data=2,1000

數(shù)據(jù)更新成功!

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):2

您選擇的功能號(hào)為:2

100 1000 300

請(qǐng)按任意鍵繼續(xù). . .

======順序表操作演示=======

1. 創(chuàng)建一個(gè)空的順序表

2. 輸出順序表的全部數(shù)據(jù)

3. 查詢順序表某個(gè)位置的數(shù)據(jù)

4. 查詢數(shù)據(jù)在順序表中的位置

5. 向順序表指定位置插入數(shù)據(jù)

6. 刪除順序表指定位置的數(shù)據(jù)

7. 更新順序表指定位置的數(shù)據(jù)

8. 退出順序表操作演示程序

===========================

輸入1-8,選擇所需功能號(hào):8

您選擇的功能號(hào)為:8

謝謝使用本程序~

總結(jié)

以上是生活随笔為你收集整理的c语言创建空顺序表的程序,C语言实现顺序表的创建与增删改查操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。