1、当scanf控制符是字符“%c”的时候,要注意回车,回车也是一个字符,会被scanf("%c",&);吸收,fflush(stdin);可以解决这一问题。
2、线性表基本操作:
Initlist(&L)建立线性表;
DestroyList(&L)销毁表;
ListEmpty(L),表空返回true,否则false;
GetElem(L,i,&e),e返回位序i的值;
LocateELem(L,e,compare()),i个元素与e相同,返回e,否则返回0;
PriorElem(L,cur_e,prior_e),返回前驱,否则无定义;
NextElem(L,cur_e,next_e),返回后继,否则无定义;
ListTraverse(L,visit()),调用visit()函数访问表中元素;
ClearLsit(&L),清空表;
PutElem(L,i,&e)将表中第i个元素赋值给e;
ListInsert(&L,i,e),在第i个元素之前插入e的值,表长加一;
ListDelete(&L,i,e),删除第i个元素,表长减一。
3、顺序表类型定义:#define List_InIt_SIZE 100
#define ListCreatement 10
typedef struct{
Elemtype *elem;
int length 10;
int listsize 100;
}SqList;
4、单链表定义: typedef struct LNode{
struct data;
struct *next;
}LNode,* LinkList;
5、单链表基本操作:插入,s指向需要插入的结点,p指向i-1位置的结点。s->next=p->next;p->next=s;删除,s指向需要删除的结点,p指向i-1位置的结点。p->next=s->next;free(s);
6、双向循环链表的定义:typedef struct DuLNode{
ElemType data;
struct DuLNode *prior;
struct DuLNode *next;
}DuLNode,*DuLinklist;
7、双向循环链表的基本操作:插入,s指向需要插入的结点,p指向i+1位置的结点。s->prior=p->prior;s->next=p;p->prior->next=s;p->prior=s;s指向需要删除的结点。s->prior->next=s->next; s->next->prior=s->prior;



