首页 > 代码库 > 单链表的练习-头插法
单链表的练习-头插法
/*单链表的练习-头插法*/ /*单链表由头结点就可以唯一确定*/ #include <malloc.h> #include <stdio.h> #include <stdlib.h> //定义单链表结构 typedef struct Node{ int data; //数据域 Node * pNext; //指针域 }NODE,* PNODE; PNODE create_list(void); //创建链表 void show_list(PNODE pHead); //显示链表 void insert(PNODE pHead,int pos,int inval); //向链表中某个位置插入元素 int deleteList(PNODE pHead,int pos); //删除链表某个位置上的值 void find(PNODE pHead,int fval); //在链表中查找某个元素 void main(){ PNODE pHead = NULL; //定义一个头结点,初始值为空 pHead = create_list(); show_list(pHead); insert(pHead,2,100); show_list(pHead); find(pHead,3); printf("你所删除的值是%d\n",deleteList(pHead,2)); show_list(pHead); } PNODE create_list(void){ int length,val; PNODE pHead = (PNODE)malloc(sizeof(NODE)); //向内存申请头节点空间 pHead->pNext=NULL; //开始的时候只有头结点自身,没有其它结点 if(NULL == pHead){ printf("分配失败,程序终止"); exit(-1); } printf("请输入需要生成的单链表的长度:"); scanf("%d",&length); for(int i=0;i<length;i++){ //for循环生成指定个数的结点 printf("请输入第%d个节点的值: ",i+1); scanf("%d",&val); PNODE pNew = (PNODE)malloc(sizeof(NODE)); if(NULL == pNew){ printf("分配失败,程序终止"); exit(-1); } pNew->data=http://www.mamicode.com/val; //给新申请的结点数据域赋值"单链表的值如下:\n"); PNODE P = pHead->pNext; while(P != NULL){ //while巡检打印出所以结点,直到下个结点不存在 printf("%d ",P->data); P=P->pNext; } printf("\n"); } void insert(PNODE pHead,int pos,int inval){ PNODE P = pHead; int j=0; while(P != NULL && j<pos-1){ //如果结点不为空,把P指针移动到插入位置的前一个结点位置 P = P->pNext; j++; } if(P == NULL){ printf("插入失败\n"); exit(-1); }else{ PNODE pNew = (PNODE)malloc(sizeof(NODE)); //申请新的结点 pNew->data=http://www.mamicode.com/inval; //将要插入的值赋值给新结点的数据域"你已经成功的插入了元素%d到链表中.\n",inval); } } int deleteList(PNODE pHead,int pos){ PNODE P = pHead,S; int j=0,x; if(P != NULL && j<pos-1){ P = P->pNext; j++; } if(P == NULL){ printf("删除失败,数组是空的"); exit(-1); }else{ S = P->pNext; P->pNext = S->pNext; x = S->data; free(S); return x; } } void find(PNODE pHead,int fval){ PNODE P = pHead; int cnt=0; if(P == NULL){ printf("不用找了,链表是空的\n"); exit(-1); } while(P != NULL){ P = P->pNext; ++cnt; if(P->data=http://www.mamicode.com/=fval){"你要找的数%d在链表中,它在链表的第%d个位置\n",fval,cnt); break; } } }
结果截图
本文出自 “明镜亦非台” 博客,请务必保留此出处http://kk876435928.blog.51cto.com/3530246/1868677
单链表的练习-头插法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。