C語言實現線性表的插入和刪除操作

2021-07-31 04:11:24 字數 2266 閱讀 4314

這其實是上機實驗的題目,在網上找了找資料發現都是c++的,參考著《資料結構(c語言版)》(清華大學出版社)裡面的偽**實現的。

實現後加上了備註,**條理還算清晰就拿出來分享一下。

題目要求:

設計程式建立乙個順序表,要求從鍵盤輸入整數,並完成新增插入和刪除元素功能,並將該順序表的元素從螢幕顯示出來。

使用malloc和realloc函式動態分配記憶體位址。

完整**:

#include #include #define list_init_size 5 //線性表初始長度

#define listincrement 5 //線性表每次擴充長度

#define ok 1

#define error 0

//線性表結構體

typedef struct sqlist

;//初始化線性表

int initlist_sq(struct sqlist *l)

//向線性表中插入資料

int listinsert_sq(struct sqlist *l, int i, int e)

int *q = &(l->elem[i - 1]);

int *p;

for (p = &l->elem[l->len - 1]; p >= q; --p)

*(p + 1) = *p;

*q = e;

++l->len;

return ok;

}//刪除線性表中的資料

int listdelete_sq(struct sqlist *l, int i, int *e)

//輸出線性表中的資料

int listshow_sq(struct sqlist *l, char *s)

putchar('\n');

}void main()

listshow_sq(&l, "原始資料:");

//定義插入/刪除操作時位置和數值引數

int s, v;

//插入操作

printf("請輸入資料插入的位置s 和數值v :");

scanf("%d%d", &s, &v);

printf("%s", listinsert_sq(&l, s, v) ? "插入成功.\n" : "插入失敗.\n");

listshow_sq(&l, "插入後:");

//刪除操作

printf("請輸入資料刪除的位置s :");

scanf("%d", &s);

if (listdelete_sq(&l, s, &v))

printf("刪除成功.刪除的資料是:%d\n", v);

else

printf("刪除失敗.位置有誤.");

listshow_sq(&l, "刪除後:");

system("pause");

}

截圖:

安裝gcc(mingw)

網上教程很多,舉個栗子:

在cmd中執行命令:

gcc .\c語言實現線性表的插入和刪除操作.c
編譯時會提示兩個無傷大雅的警告,

執行後會在目錄中生成a.exe

執行後按照流程操作

完美執行

安裝完成,拷貝**直接執行

輸入測試資料,完美執行

非常榮幸我的文章能夠幫到這麼多同學,也希望這次的更新可以解決編譯不成功的遺憾。

另外,關於資料結構中基礎知識的應用在我的文章c語言模擬最高優先數優先程序排程演算法有很好的體現,如果有興趣可以執行一下,也許會有所幫助。鏈結→

順序線性表的插入,刪除及遍歷(C語言實現)

include include define list init size 100 空間初始分配量 define listcreate 10 空間分配的增量 define ok 1 define error 0 define overflow 2 typedef int status typedef...

線性表c語言實現

lineartable.h pragma once 線性表的實現 define maxsize 20 define ok 1 define error 2 typedef struct list list t 線性表初始化 void initlist list t list 根據下表查詢資料 int...

C語言實現線性表

include include define maxsize 100 定義線性表最大長度 定義順序表 typedef struct seqlist 初始化順序表 void initlist seqlist l 建立順序表 intcreatlist seqlist l,int a,int n for ...