}
return OK; }
status Display(elemtype e){
printf(\return OK;
}
status main(){
sqlist LIST;elemtype ELEM;
elemtype * e=&(ELEM); sqlist * L=&(LIST); printf(\执行操作:\\n\
printf(\ InitList_Sq(L); List_Insert(L,1,10);
List_Insert(L,2,20); List_Insert(L,3,30); List_Travel(L,Display); printf(\执行操作:\\n\
printf(\ List_Delete(L,2);
List_Travel(L,Display); printf(\执行操作:\\n\
printf(\ GetElem(L,2,e); Display(ELEM); List_Travel(L,Display); getchar(); }
6
截图:
链式存储C程序: #include
#define OVERFLOW 2008 typedef struct Lnode{
elemtype data;
struct Lnode * next; } * Linklist; //头指针
status InitLinklist(Linklist & name) {
name=(Linklist)malloc(sizeof(Lnode));
if(!name)return ERROR; name->next=0;//定义指针域为空 return OK; }
status ListInsert(Linklist & name, int num, elemtype elem)
{
//在带头节点的单链表name中第i个位置之前插入元素elem
Linklist p;
7
p= name; int i=0;
while(p && i
if(!p||i>num-1) return ERROR; Linklist temp; temp=(Linklist)malloc(sizeof(Lnode)); }
status ListDelete(Linklist & name,int num) { //在带头结点的单链表name中删除第num个数据元素元素 Linklist p;
}
status GetElem(Linklist & name, int num, elemtype & elem) {
Linklist p;
p=name->next;
p=name; int i=0;
while(p&&i
if(!p||i>num-1) return ERROR; Linklist temp=p->next;
p->next=p->next->next;//即使是删除最后一个元素,空指针也能继承 temp->data=elem; temp->next=p->next; p->next=temp; return OK;
free(temp);
int i=1; while(p && i
status ListChange(Linklist & name, int num, elemtype elem) {
Linklist p;
p=name->next; int i=1;
while(p&&i
return OK;
}
status ListTravel(Linklist name, status (* visit) (elemtype i))
8
{
Linklist p;
p=name;int i=1; do{ p=p->next; printf(\第%d个元素为:\
(* visit)(p->data);
i++;
//注意:先移动指针再调用显示函数,因为do while 循环的特点是,先执行循环体
再判断while后的条件是否成立
}while(p->next); return OK;
}
status Display(elemtype i){ printf(\return OK;
}
status main()
{Linklist L; elemtype elem; int i;
printf(\执行操作:\\nInitLinklist(L)\\nfor(i=1;i<=5;i++)\\n{ListInsert(L,i,i);}\\n\InitLinklist(L);
for(i=1;i<=5;i++){ListInsert(L,i,i);} ListTravel(L,Display);
printf(\执行操作:\\nListChange(L,2,99)\\n\ListChange(L,2,99);
ListTravel(L,Display);
printf(\执行操作:\\nListInsert(L,6,6);\\n\
ListInsert(L,6,6);
ListTravel(L,Display);
printf(\执行操作:\\nGetElem(L,3,elem);\\nDisplay(elem);\\n\GetElem(L,3,elem); Display(elem);
ListTravel(L,Display);
printf(\执行操作:\\nListDelete(L,1);\\n\ListDelete(L,1);
ListTravel(L,Display); getchar(); return OK; }
截图:
9
10