数据结构 单链表基本操作代码.docx
数据结构 单链表基本操作代码实验一 单链表 #include "stdio.h" #include "stdlib.h" typedef int ElemType; typedef struct LNode ElemType data; struct LNode *next; LNode,*LinkList; void creatLNode(LinkList &head) int i,n; LNode *p; head=(LNode*)malloc(sizeof(LNode); head->next=NULL; printf("请输入链表的元素个数:"); scanf("%d",&n); for(i=n;i>0;i-) p=(LNode*)malloc(sizeof(LNode); printf("第%d个元素:",i); scanf("%d",&p->data); p->next=head->next; head->next=p; void InsertLNode(LinkList &L) LNode *p=L; int i,j=0,e; printf("请输入你要插入的位置:"); scanf("%d",&i); printf("请输入你要插入的元素:"); scanf("%d",&e); while (p->next&&j<i-1) p=p->next; +j; LNode *s; s=(LNode*)malloc(sizeof(LNode); s->data=e; s->next=p->next; p->next=s; int DeleteLNode(LinkList &L,int i,int &e) LNode *p; p=L; LNode *q; int j=0; while (p->next&&j<i-1) p=p->next; +j; if(!(p->next)|j>i-1) printf("删除位置不合理!n"); return 0; q=p->next; p->next=q->next; e=q->data; free(q); return e; void DeleteCF(LinkList &L) LNode *p,*s,*r; p=L->next; while(p!=NULL) r=p; s=r->next; while(s!=NULL) if(p->data=s->data) r->next=s->next; s=s->next; else r=r->next; s=s->next; p=p->next; void display(LinkList &L) LNode *p; p=L->next; while(p!=NULL) printf("%d ",p->data); p=p->next; printf("n"); void main printf("线性链表的基本操作!n"); LinkList L; creatLNode(L); printf("初始链表为:"); display(L); InsertLNode(L); printf("插入元素后的链表为:"); display(L); int e=0; e=DeleteLNode(L,2,e); /删除链表中的第二个元素 printf("删除元素后的链表为:"); display(L); printf("你删除的元素为:%dn",e); printf("nnn"); printf("单链表重复元素的删除!n"); LinkList L1; creatLNode(L1); printf("初始链表为:"); display(L1); DeleteCF(L1); printf("删除重复元素后为:"); display(L1);