c语言创建空顺序表的程序,C语言实现顺序表的创建与增删改查操作
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)題。
- 上一篇: 图片批量压缩工具软件免费版 Caesiu
- 下一篇: iOS中的5款小众黑科技APP!用了都舍