這其實是上機實驗的題目,在網上找了找資料發現都是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 ...