/************************************************************************* > File Name: sqlist.c > Author: Wenfei6316 > Mail: [email protected] > Created Time: 2018年06月17日 星期日 18时03分34秒 ************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define MAXSIZE 25 typedef int data_t; typedef struct { data_t data[MAXSIZE]; int len; }SqNode, *Sqlist; Sqlist CreateEmptySqlist(void); void GetElem(Sqlist sqlist, int posi, data_t *value); void PrintList(Sqlist sqlist); void ListInsert(Sqlist sqlist, int posi, data_t value); void ListDelete(Sqlist sqlist, int posi, data_t *value); int main(int argc, const char *argv[]) { int i, posi = 3; data_t data; Sqlist sq; sq = CreateEmptySqlist(); for (i=0; i<5; i++) { sq->data[sq->len] = i; sq->len++; } GetElem(sq, posi, &data); printf("data is %d\n", data); PrintList(sq); ListInsert(sq, 2, 13); PrintList(sq); ListDelete(sq, 3, &data); PrintList(sq); free(sq); return 0; } //创建空顺序表 Sqlist CreateEmptySqlist(void) { Sqlist sq; sq = (Sqlist)malloc(sizeof(SqNode)); if (sq == NULL) { perror("Create sequence list failed!\n"); exit(EXIT_FAILURE); } sq->len = 0; return sq; } //获取顺序表元素 void GetElem(Sqlist sqlist, int posi, data_t *value) { if (sqlist == NULL) { printf("Sequence list is error!\n"); return ; } if (posi>sqlist->len || posi<0) { printf("Position is error!\n"); return ; } *value = sqlist->data[posi]; return ; } //遍历顺序表 void PrintList(Sqlist sqlist) { int i, count = 0; if (sqlist == NULL) { printf("Sequence list error!\n"); return ; } if (sqlist->len == 0) { printf("Sequence list is empty!\n"); return ; } for (i=0; i<sqlist->len; i++) { printf("%2d ", sqlist->data[i]); if (!(++count % 5)) printf("\n"); } if (count % 5) printf("\n"); } //顺序表插入元素 void ListInsert(Sqlist sqlist, int posi, data_t value) { int i; if (sqlist->len == MAXSIZE) { printf("Sequence list is full!\n"); return ; } else if (posi<0 || posi>sqlist->len+1) { printf("Insert list error!\n"); return ; } sqlist->len++; for (i=sqlist->len; i>posi; i--) sqlist->data[i] = sqlist->data[i-1]; sqlist->data[i] = value; return ; } //顺序表删除元素 void ListDelete(Sqlist sqlist, int posi, data_t *value) { int i; *value = 0; if (sqlist == NULL) { printf("Sequence list is empty!\n"); return ; } if (posi<0 || posi>sqlist->len) { printf("List delete error!\n"); return ; } *value = sqlist->data[posi]; for (i=posi; i<sqlist->len; i++) sqlist->data[i] = sqlist->data[i+1]; sqlist->len--; return ; }
基于 Linux 的顺序表代码
猜你喜欢
转载自blog.csdn.net/wenfei11471/article/details/80721076
今日推荐
周排行