首页 > 代码库 > 单链表的基本操作
单链表的基本操作
1,单链表储存结构:
typedef int ElemType; typedef struct node { ElemType data; node *next ; }LNode, *LinkList;
2,创建单链表(头插法和尾插法):
LinkList Creat_tail_LinkList() //尾插法: { LinkList L,p; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; int n,x; scanf("%d",&n); for(int i=n;i>0;i--) { scanf("%d",&x); p=(LinkList)malloc(sizeof(LNode)); p->data=http://www.mamicode.com/x;>
3. 查找元素:LinkList Locate_anw_LinkList(LinkList L,ElemType e) //按值查找 { scanf("%d",&e); LinkList p=L->next; while(p&&p->data!=e) p=p->next; return p; } int Locate_cur_LinkList(LinkList L,ElemType cur,ElemType &tot) //按位置查找并将元素输出; { scanf("%d",&cur); int j; LinkList p=L->next; j=1; while(p&&j<cur) { p=p->next; j++; } if(!p||j>cur) return 0; tot=p->data; return 1; }
4,插入元素:
void Insert_LinkList(LinkList &L,ElemType cur,ElemType hh) //在指定位置插入元素 { LinkList p,s; p=L; int j=0; while(p&&j<cur-1) //注意点:&& { p=p->next; j++; } if(!p||j>cur-1) return ; s=(LinkList)malloc(sizeof(LNode)); s->data=http://www.mamicode.com/hh;>
5,删除元素:int Dele_LinkList(LinkList &L,ElemType cur,ElemType &ss) //在指定位置删除元素 { LinkList p; p=L; int j=0; while(p->next&&j<cur-1) { p=p->next; j++; } if(!p->next||j>cur-1) return 0; ss=p->next->data; p->next=p->next->next; return 1; }
6,输出单链表元素:void Printf_LinkList(LinkList L) //输出单链表中的元素 { LinkList p; p=L->next; while(p) { printf("%d ",p->data); p=p->next; } printf("\n"); }
7,单链表合并:void Merge_LinkList(LinkList &La,LinkList &Lb,LinkList &Lc) //合并两个递增单链表 { //LNode *pa,*pb,*pc; LinkList pa,pb,pc; pa=La->next; pb=Lb->next; Lc=pc=La; while(pa&&pb) { if(pa->data<=pb->data) { pc->next=pa; pc=pa; pa=pa->next; } else { pc->next=pb; pc=pb; pb=pb->next; } } pc->next=pa?pa:pb; free(Lb); }
单链表的基本操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。