程序员面试题目总结--链表(1)【单链表插入和删除】
2014-08-18 20:12
323 查看
1、单链表插入和删除
题目:单链表插入和删除
分析:插入是将值为x的新结点插入到单链表的第i个结点的位置上,删除即将单链表的第i个结点删去。
题目:单链表插入和删除
分析:插入是将值为x的新结点插入到单链表的第i个结点的位置上,删除即将单链表的第i个结点删去。
//单链表插入和删除 #include<iostream> using namespace std; typedef struct node { int data; node *next; }linklist; linklist *head=NULL; //创建长度为len的链表 linklist* CreateList(int* arr,int len) { int data; linklist* pCur,* pRear; head=(linklist*)malloc(sizeof(linklist)); pRear=head; int count=0; while(count<len) { pCur=(linklist*)malloc(sizeof(linklist)); pCur->data=arr[count]; pRear->next=pCur; pRear=pCur; count++; } pRear->next=NULL; return head; } //显示链表 void ShowList(linklist* p) { while(p) { cout<<p->data <<' '; p=p->next; } cout << endl; } /************************************************************************/ /* 将值为x的新结点插入到单链表的第i个结点的位置上 */ /************************************************************************/ void InsertList(linklist* p,int x,int i) { int j=1; while(p->next && j<i) { p=p->next; ++j; } if(p==NULL) return; linklist* s=(linklist*)malloc(sizeof(linklist)); s->data=x; s->next=p->next; p->next=s; } /************************************************************************/ /* 删除单链表的第i个结点 */ /************************************************************************/ void DeleteList(linklist* p,int i) { int j=1; while(p->next && j<i) { p=p->next; ++j; } if(p==NULL || p->next==NULL || j>i) return; linklist* q=p->next; p->next=q->next; free(q); } int main() { int a[]={3,4,5,1,2,-1,7}; CreateList(a,sizeof(a)/sizeof(a[0])); ShowList(head->next); InsertList(head,10,4); ShowList(head->next); DeleteList(head,5); ShowList(head->next); return 0; }
相关文章推荐
- 程序员面试题目总结--链表(6)【单链表排序】
- 程序员面试题目总结--链表(3)【单链表反转】
- 程序员面试题目总结--链表(4)【从尾到头输出单链表】
- 程序员面试题目总结--链表(5)【寻找单链表的中间结点】
- 程序员面试题目总结--数组(一)【递归求数组所有元素和、用一个for循环打印出一个二维数组、用递归判断数组是否是递增、有序数组中删除重复元素】
- 程序员面试题目总结--链表(2)【找出单链表中的倒数第K个元素】
- 面试大总结之一:Java搞定面试中的链表题目
- 链表的基础操作总结(链表创建,插入,删除,遍历等等)
- 程序员面试题目总结--数组(27)【Two Sum 、3Sum、3Sum Closest 、4Sum】
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 单链表的基本操作(读取、插入、删除)及优缺点总结
- 面试总结:用Java搞定面试中的链表题目
- (转)面试大总结之一:Java搞定面试中的链表题目
- 链表面试笔试题目总结
- 面试大总结之一:Java搞定面试中的链表题目
- 链表面试笔试题目总结
- 面试大总结之一:Java搞定面试中的链表题目
- 程序员面试题目总结--数组(四)【数列中符合条件数对的个数、数组是否存在重复元素、重新排列数组使数组左边为奇数,右边为偶数、数组中的第二大数、数组中的最小值和最大值】
- C# 面试题目 单链表中删除重复数据
- 程序员面试题目总结--数组(三)【旋转数组的最小数字、旋转数组中查找指定数、两个排序数组所有元素中间值、数组中重复次数最多的数、数组中出现次数超过一半的数】