单链表的插入操作

    xiaoxiao2023-10-08  161

    建立长度为n的单链表,在第i个结点之前插入数据元素data。 输入 第一行为自然数n,表示链式线性表的长度; 第二行为n个自然数表示链式线性表各元素值; 第三行为指定插入的位置i;第四行为待插入数据元素data。 输出 指定插入位置合法时候,输出插入元素后的链式线性表的所有元素,元素之间用一个空格隔开。输入不合法,输出"error!"。 样例输入 复制样例 5 1 2 3 4 5 3 6 样例输出 1 2 6 3 4 5

    代码如下: #include #include<stdlib.h> using namespace std; typedef int ElemType; #define max 1000 ElemType a[max]; typedef struct Lnode { ElemType date; struct Lnode *next; }linklist; void createlist(linklist *&L,ElemType a[],int n) { int i; linklist *s,*r; L=(linklist *)malloc(sizeof(linklist)); r=L; for(i=0;i<n;i++) { s=(linklist *)malloc(sizeof(linklist)); s->date=a[i]; r->next=s; r=s; } r->next=NULL; } void displist(linklist *L) { linklist *p=L->next; while(p!=NULL) { cout<date<<" "; p=p->next; } } bool listinsert(linklist *&L,int i,ElemType item) { if(i<=0) return false; else { int j=0; linklist *p=L,*s; while(j<i-1&&p!=NULL) { j++; p=p->next; } if(p==NULL) return false; else { s=(linklist *)malloc(sizeof(linklist)); s->date=item; s->next=p->next; p->next=s; return true; } } } main() { linklist *L; int i,n,index; ElemType item; cin>>n; for(i=0;i<n;i++) { cin>>a[i]; } createlist(L,a,n); cin>>index>>item; if(listinsert(L,index,item)) { displist(L); } else { cout<<“error!”; } }

    最新回复(0)