素间的逻辑结构关系
集合结构
线性结构
树状结构
网状结构
数据结构在计算机中的表示成为数据的物理结构,又称存储结构
顺序存储结构和链式存储结构
线性表
线性表的数据元素必须是连续的
(排队) 除了第一个元素,其他元素均为一个前驱
除了最后一个元素,其他元素均有一个后继
数据元素的类型必须一致
typedef short ElemType;
typedef int Array[10]; //相当于数组类型
typedef int *PINT; 整型类型的指针
int main()
{
Array ar,br //ar和br相当于是开辟了十个空间的整型数组,因为此时的Arry相当于一个数据类型
PINT a,b;
typedef 相当于已有数据类型的别名,使用原因是为了方便程序后期的查改
凡是合法的变量定义或变量声明 都可以加个typedef ,转变为类型声明。
//结构体类型:
#define SEQ_INIT_SIZE 10;
typedef int ElemType;
typedef struct //Seqlist struct Seqlist
{ {
ElemType data[SEQ_INIT_SIZE]; ElemType data[SEQ_INIT_SIZE];
struct Seqlist *next;
int cursize; int cursize;
}Seqlist,*PSlist; //类型名 };
int main() int main
{ {
Seqlist musql; struct Seqlist musql;
Seqlist *musql; struct Seqlist *musql;
Seqlist sql[]; struct Seqlist sql[];
动态内存申请空间有 (ListNode*)realloc(p->next,sizeof(ListNode);(扩容 ) malloc calloc
将 data[SEQ+INIT_SIZE] 换成 *data
再到主函数中 动态开辟内存空间。
void InitSeqList(SeqList * plist) //(SeqList seq)
{
plist ->capacity = SEQ_INIT_SIZE;
Plist ->cursize =0;
plist ->data = (ElemType*)malloc(sizeof(ElemType)*plist ->capacity);
//值传递,形参不能修饰实参
//seq.data = (ElemType*)malloc(seq.capacity);
}
int main()
{
SeqList myseq ={};
InitSeqList(&myseq);
// InitSeqList(lllseq);
return 0;
}
void PrintSeqList(SeqList *plist)
{
for(int i =0;i<plist->cursize;++i)
{
printf("顺序表内容:%5d" plist->data[i]);
}
}
void FindValue(SeqList *plist,int val)
{
int pos = -1; int pos = plist ->cursize-1
for(int i =0;i<plist->cursize;++i) while(pos>=0&&plist->data[i]!=val)
{ {
if(plist->data[i]== val) --pos;
{ }
return pos =i; return pos;
break; }
}
}
return pos;
}