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语言实现顺序表的创建与增删改查操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图片批量压缩工具软件免费版 Caesiu
- 下一篇: iOS中的5款小众黑科技APP!用了都舍