?单链表的定义 ?typedef struct LNode{ ??? ?ElemType data; ??? ?struct LNode *next; ?}LNode,*LinkList; ? ?//初始化一个带头节点的单链表 ?bool InitList(LinkList &L){ ??? ?L=(LNode *)malloc(sizeof(LNode)); ??? ?if(L==NULL){ ??? ??? ?return false; ?? ? } ?? ? L->next=NULL; ?//头结点后没有数据只有NULL? ?? ? return true; ?}? ?void test(){ ??? ?LinkList L; ??? ?InitList(L); ?} ?尾插法 ?LinkList LIst_TailInsert(LinkList &L){ ? ? int x; ? ??? ?L=(LinkList)malloc(sizeof(LNode)); ? ??? ?LNode *s,*r=L; ? ??? ?scanf("%d",&x); ? ??? ?while(x!=9999){ ? ??? ? ? ?s=(LinkList)malloc(sizeof(LNode)); ?? ? ? ?s->data=x; ?? ? ? ?r->next=s; ?? ? ? ?r=s; ?? ? ? ?scanf("%d",&x); ?? ? ? } ?? ?r->next=NULL; ?? ?return L; ?}? ? ?时间复杂度O(n) ? ? ?头插法 ?LinkList LIst_HeadInsert(LinkList &L){ ? ? LNode *s;? ?? ?int x; ? ??? ?L=(LinkList)malloc(sizeof(LNode)); ? ??? ?L->next=NULL; ? ??? ?scanf("%d",&x); ? ??? ?while(x!=9999){ ? ??? ? ? ?s=(LinkList)malloc(sizeof(LNode)); ?? ? ? ?s->data=x; ?? ? ? ?s->next=L->next; ?? ? ? ?L->next=s; ?? ? ? ?scanf("%d",&x); ?? ? ? } ?? ?return L; ?} ?? ?? ?
|