数据结构线性表

运用数据结构 线性表 的原理,制作一个活期储蓄管理系统,在此基础上完成个人帐户信息的检索、增删、修改,以及个人帐户信息的文件读写~~!!!急用~还请高手多多帮忙~!!

线性表是一种数据元素有序的逻辑结构,通常采用顺序存储结构和链式存储结构。线性表采用顺序存储结构时,有利用线性表长度的计算、线性表数据元素的存取和数据元素的遍历,同时也从物理结构上反映了线性表数据元素的逻辑结构,有点类似于c语言中的数组,但是采用顺序存储结构时,插入和删除数据元素时,要移动较多的数据元素;采用链表结构存储的线性表,克服了插入和删除数据元素时要移动较多元素的缺点,其只要寻找到需要插入和删除的数据元素处,处理相应的指针就可以实现数据元素的插入和删除,同时也和顺序存储的线性表一样方便遍历,但是其不利于计算线性表的长度,线性表的链表存储结构有以下几种常见类型:采用带头指针和头结点的单链表、采用仅带头指针的单链表、带头指针和头结点的循环链表、带头指针和尾结点的循环链表、双向链表等形式。在实际应用中,结合顺序表易于计算表长和链表易于插入和删除的特点,实际一般采用两者结合的一种单链表,其链表类型为带有头指针(含头结点)和尾指针,以及含有线性表长度的分量,在一元多项式的运算中采用的就是这种链式存储结构。此外,还有一种一般应用于无指针的高级语言中的静态单链表的存储结构。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-08
include "stdlib.h"
#include "stdio.h"

//顺序表基本操作实现

bool 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;
return 1;
}

bool ListInsert_Sq(SqList &L, int i, int e) { // 算法2.4
// 在顺序线性表L的第i个元素之前插入新的元素e,
// i的合法值为1≤i≤ListLength_Sq(L)+1
int *p;
if (i < 1 || i > L.length+1) return false; // i值不合法
if (L.length >= L.listsize) { // 当前存储空间已满,增加容量
int *newbase = (int *)realloc(L.elem,
(L.listsize+LISTINCREMENT)*sizeof (int));
if (!newbase) return false; // 存储分配失败
L.elem = newbase; // 新基址
L.listsize += LISTINCREMENT; // 增加存储容量
}
int *q = &(L.elem[i-1]); // q为插入位置
for (p = &(L.elem[L.length-1]); p>=q; --p) *(p+1) = *p;
// 插入位置及之后的元素右移
*q = e; // 插入e
++L.length; // 表长增1
return true;
} // ListInsert_Sq

void printList_Sq(SqList L){//注意:1.参数是L,而非&L;2.该函数为扩展的操作。
if(L.length>0){
int i=1;
printf("元素的顺序是:");
for(i=1;i<L.length+1;i++){
printf("%d",L.elem[i-1]);
}
printf("\n");
}
}本回答被提问者采纳
相似回答