线性表的实现
線性表的定義,初始化,插入和刪除及打印輸出
#include <stdio.h> #include<malloc.h> #include<stdlib.h>//線性表存儲空間的初始分配量 #define List_Init_Size 100 //線性表的存儲空間的分配增量 #define List_Increment 10typedef struct{int *elem;int length;int listsize; }SqList;//對于線性表進行初始化 void InitList_Sq(SqList &L){//構造一個空的線性表L.elem = (int *)malloc((List_Init_Size)* (sizeof(int)));if (!L.elem)exit(1);L.length = 0;L.listsize = List_Init_Size; }//向線性表的第i個位置插入數據 bool List_Insert_Sq(SqList &L, int i, int num){//檢查i的合法性if (i < 1 || i > L.length + 1){return false;}//如果當前存儲空間已滿,則再分配空間給該線性表if (L.length >= L.listsize){int * newbase = (int *)realloc(L.elem, (L.listsize + List_Increment)* sizeof(int));if (!newbase)return false;//賦值新地址L.elem = newbase;//增加存儲空間L.listsize += List_Increment;}//自第i個元素依次先后移動一個for (int j = L.length - 1; j >= i; j--){L.elem[j + 1] = L.elem[j];}L.elem[i - 1] = num;L.length++;return true; }//刪除線性表中的第i個元素,并返回 bool ListDelete_Sq(SqList &L, int i,int &num){//檢查i的合法性if (i < 1 || i > L.length)return false;//將被刪除的元素賦值給numnum = L.elem[i - 1];//元素依次前移for (int j = i - 1; j < L.length-1; j++){L.elem[j] = L.elem[j + 1];}L.length--;return true; }//輸出線性表 void Print(SqList &L){for (int i = 0,index = 1; i < L.length; i++){if(index < 10){printf("%5d ", L.elem[i]);index++;}else{printf("%d\n", L.elem[i]);index = 1;}} }int main() {SqList list;InitList_Sq(list);for(int i = 1;i < 108;i++){List_Insert_Sq(list,i,i);}Print(list);int temp = 0;ListDelete_Sq(list,2,temp);printf("\n刪除的元素:%d\n",temp);printf("刪除后的線性表:\n");Print(list);return 0; }總結
- 上一篇: 最小公倍数和最大公约数
- 下一篇: PAT ---- 1029. 旧键盘(