程序员面试题目总结--链表(1)【单链表插入和删除】

来源:互联网 发布:socket() python 编辑:程序博客网 时间:2024/06/13 12:15

1、单链表插入和删除

题目:单链表插入和删除

分析:插入是将值为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;}




0 0
原创粉丝点击