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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

SqListDemo.c

/* 線性表的順序存儲實現 */

#include

#include

#include

// 定義符號常量

#define LIST_INIT_SIZE 50

#define LISTINCREMENT 10

#define OK 1

#define ERROR 0

#define OVERFLOW -2

// 定義元素類型

typedef int ElemType;

// 定義順序表類型

typedef struct {

ElemType *elem; // 順序表元素

int length; // 順序表長度

int listsize; // 順序表存儲容量

} SqList;

// 構造空順序表

int InitList(SqList *L)

{

// 獲取順序表基址

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

// 存儲空間分配失敗

if (!L->elem) return ERROR;

// 空表長度為0

L->length = 0;

// 分配給空表的存儲容量

L->listsize = LIST_INIT_SIZE;

// 初始化成功

return OK;

}

// 獲取順序表第i個元素

ElemType GetListElem(SqList *L, int i)

{

// 檢查i的合法性

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

return ERROR;

else

return L->elem[i-1];

}

// 定位目標元素在順序表中位置

int LocateListElem(SqList *L, ElemType e)

{

int i = 1;

// 定義指針p,指向第一個元素

ElemType *p = L->elem;

// 目標元素依次與順序表元素比較

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

{

i++;

p++;

}

if (i > L->length)

return 0;

else

return i;

}

// 在順序表第i個位置插入元素

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個元素元素,獲取順序表新基址

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

if (!L->elem) return ERROR;

// 按增量修改存儲空間大小

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;

// 順序表長度加1

L->length++;

// 插入成功

return OK;

}

// 刪除順序表第i個元素

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];

// 順序表長度減1

L->length--;

// 刪除成功

return OK;

}

// 修改順序表第i個元素

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

{

// 判斷位置合法性

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

// 修改第i個元素值

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. 創建一個空的順序表\n");

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

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

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

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

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

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

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

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

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

scanf("%d", &choice);

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

switch(choice)

{

case 1:

if (InitList(pl))

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

else

printf("\n順序表創建失敗!\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數據插入成功!\n\n");

else

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

system("pause");

break;

case 6:

printf("i=");

scanf("%d", &i);

if (DeleteListElem(pl, i))

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

else

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

system("pause");

break;

case 7:

printf("i,data=");

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

if (UpdateListElem(pl, i, data))

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

else

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

system("pause");

break;

case 8:

isRunning = 0;

break;

}

}

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

return 0;

}

運行結果如下:

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:1

您選擇的功能號為:1

順序表創建成功!

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:5

您選擇的功能號為:5

i,data=1,100

數據插入成功!

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:5

您選擇的功能號為:5

i,data=2,300

數據插入成功!

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:5

您選擇的功能號為:5

i,data=2,250

數據插入成功!

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:5

您選擇的功能號為:5

i,data=2,140

數據插入成功!

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:2

您選擇的功能號為:2

100 140 250 300

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:3

您選擇的功能號為:3

i=3

L[3]=250

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:4

您選擇的功能號為:4

data=250

250 is at [3] of the list.

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:4

您選擇的功能號為:4

data=1000

1000 is not in the list.

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:6

您選擇的功能號為:6

i=3

數據刪除成功!

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:2

您選擇的功能號為:2

100 140 300

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:7

您選擇的功能號為:7

i,data=2,1000

數據更新成功!

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:2

您選擇的功能號為:2

100 1000 300

請按任意鍵繼續. . .

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

1. 創建一個空的順序表

2. 輸出順序表的全部數據

3. 查詢順序表某個位置的數據

4. 查詢數據在順序表中的位置

5. 向順序表指定位置插入數據

6. 刪除順序表指定位置的數據

7. 更新順序表指定位置的數據

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

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

輸入1-8,選擇所需功能號:8

您選擇的功能號為:8

謝謝使用本程序~

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。