这是单链表的创建,取元素,添加,删除和销毁等功能实例: #include #define ERROR 0 typedef int Status; typedef int ElemType; typedef struct Lnode{ ElemType data; struct Lnode *next; }Lnode; typedef Lnode *LinkList; Status InitList(LinkList &L) { Lnode *p; p=(Lnode *)malloc(sizeof(Lnode)); if(p==NULL) return ERROR; L=p; L->next=NULL; return OK; } Status CreatList(LinkList &L) { int i,len; ElemType x; LinkList p,q; printf(\"input list length:\"); scanf(\"%d\ printf(\"\\ninput list data:\\n\"); i=0; q=L; while(i q->next=NULL; return OK; } int ListLength(LinkList L) { int len=0; LinkList p; p=L->next; while(p) { len++; p=p->next;} return (len); } Status GetList(LinkList L,int i,ElemType &e) { int j; LinkList p; if(i<1) return ERROR; j=0; p=L; while(p->next!=NULL&&jnext; j++;} if(j==i) {e=p->data; return OK;} return ERROR; } Status InsertList(LinkList &L,int i,ElemType e) { int j; LinkList p,q; if(i<1) return ERROR; j=0; p=L; while(p->next!=NULL&&j { q=(Lnode *)malloc(sizeof(Lnode)); q->data=e; q->next=p->next; p->next=q; return OK;} return ERROR; } Status DeleteList(LinkList &L,int i,ElemType &e) { int j; LinkList p,q; if(i<1) return ERROR; j=0; p=L; while(p->next!=NULL&&j if(p->next==NULL) { return ERROR;} else { q=p->next; p->next=q->next; e=q->data; free(q); return OK;} } void PrintList(LinkList L) { LinkList p; p=L->next; printf(\"链表中的元素为:\"); while(p){ printf(\"%4d\ p=p->next; } printf(\"\\n\"); } void main() { ElemType i,e; LinkList L; InitList(L); CreatList(L); printf(\"输入要取元素的位置:\"); scanf(\"%d\ GetList(L,i,e); printf(\"第%d个位置的元素是:%d\\n\ printf(\"输入要插入元素的位置及元素值:\"); scanf(\"%d%d\ InsertList(L,i,e); printf(\"已插入元素%d在第%d个位置!\\n\ PrintList(L); printf(\"输入要删除的位置:\"); scanf(\"%d\ DeleteList(L,i,e); printf(\"已删除第%d个元素的位置%d!\\n\ PrintList(L); } 这是单链表中删除三个链表相同元素的实例: #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 typedef int Status; typedef int ElemType; typedef struct Lnode{ ElemType data; struct Lnode *next; }Lnode; typedef Lnode* LinkList; void creatList(LinkList &L,int length) { int i; ElemType elem; LinkList p,s; L=(LinkList)malloc(sizeof(Lnode)); L->next=NULL; p=L; printf(\"请输入链表数据:\"); for(i=0;i } p->next=NULL; } Status dispList(LinkList L) { LinkList p=L->next; if(!p){ printf(\"链表是空的!\\n\"); return FALSE; } while(p){ printf(\"%4d\ p=p->next; } printf(\"\\n\"); return TRUE; } Status isElem(LinkList L,ElemType e) { LinkList p=L->next; while(p){ if(e==p->data) return TRUE; else p=p->next; } if(!p) return FALSE; } Status deleteElem(LinkList L1,LinkList L2,LinkList L3) { LinkList q=L1, p=L1->next; while(p){ if(isElem(L2,p->data)&&isElem(L3,p->data)) { q->next=p->next; p=q->next; } else { q=p; p=p->next; } } return FALSE; } void distroyList(LinkList &L) { LinkList p=L,q; while(p){ q=p->next; free(p); p=q; } printf(\"链表已经被销毁!\\n\"); } void main() { int len; printf(\"请输入链表1的长度:\"); scanf(\"%d\ LinkList L1,L2,L3; creatList(L1,len); printf(\"请输入链表2的长度:\"); scanf(\"%d\ creatList(L2,len); printf(\"请输入链表3的长度:\"); scanf(\"%d\ creatList(L3,len); printf(\"链表1中的元素为:\"); dispList(L1); printf(\"链表2中的元素为:\"); dispList(L2); printf(\"链表3中的元素为:\"); dispList(L3); deleteElem(L1,L2,L3); printf(\"\\n删除后链表1中的元素为:\"); dispList(L1); distroyList(L1); } 因篇幅问题不能全部显示,请点此查看更多更全内容