1 solutions
-
0
C :
/* 题目描述 输入n个数,在x个数后面插入k,并且删除第y个数。输出该序列。 输入 输入四行,第一行n表示n个数,第二行输入的n个数,第三行x,y分别表示插入和删除的位置,第四行表示需要插入的数。 输出 输出该序列,数字之间用一个空格分开。 */ #include<stdio.h> #include<stdlib.h> typedef struct tagNODE { int data; struct tagNODE *next; struct tagNODE *prev; }node,*linklist; void LinkCreat(linklist head, int n) { int i,tmp_d; linklist newNODE,temp; temp = head; for ( i = 0; i < n; i++) { scanf("%d", &tmp_d); newNODE = (linklist)malloc(sizeof(node)); newNODE->data = tmp_d; newNODE->next = temp->next; newNODE->prev = temp; temp->next = newNODE; temp = newNODE; } } void nodeADD(linklist head, int x, int k) { linklist pointer,newNODE; pointer = head; while (x > 0) { pointer = pointer->next; x--; } newNODE = (linklist)malloc(sizeof(node)); newNODE->data = k; newNODE->next = pointer->next; newNODE->prev = pointer; pointer->next = newNODE; if (newNODE->next != NULL) newNODE->next->prev = newNODE; } void nodeDEL(linklist head, int y) { linklist pointer; pointer = head; while (y > 0) { pointer = pointer->next; y--; } pointer = pointer->prev; pointer->next = pointer->next->next; if(pointer->next != NULL) pointer->next->prev = pointer; } int main() { int i,n,x,k,y; linklist head,pointer; head = (linklist)malloc(sizeof(node)); head->prev = NULL; head->next = NULL; scanf("%d", &n); LinkCreat( head, n); scanf("%d%d%d", &x, &y, &k); nodeADD(head, x, k); nodeDEL(head, y); pointer = head; while (pointer->next != NULL) { pointer = pointer->next; printf("%d ", pointer->data); n--; } return 0; }
C++ :
#include<bits/stdc++.h> using namespace std; struct node{ int data; node *prior,*next; }; node* Create(int n){//创建带头结点双向循环链表 node *h = new node; node *r; h->next = NULL; r = h; for(int i=1; i<=n; i++){ node *p = new node; cin>>p->data; r->next = p; p->prior = r; //记录前驱 r = p;//更新尾指针 } r->next = h; h->prior = r; return h; } void Insert(node *h, int pos, int val){ node *p = h; for(int i=1; i<=pos+1; i++){ p = p->next; } node *s = new node; s->data = val; //增加元素 s->next = p; p->prior->next = s; s->prior = p->prior; p->prior = s; } void Delete(node *h, int pos){ node *p = h; for(int i=1; i<=pos; i++){ p = p->next; } p->prior->next = p->next; p->next->prior = p->prior; delete p; } void Print(node *h){ node *p = h->next; while(p!=h){ cout<<p->data<<" "; p = p->next; } cout<<endl; } int main() { node *h,*p,*pre,*q; int n,x,k,y,val; cin>>n; h = Create(n);//创建一个不带头结点循环单链表 cin>>x>>y>>val; Insert(h,x,val); Delete(h,y); Print(h); return 0; }
Pascal :
var a:array[1..500]of longint; i,j,k,m,n,l:longint; begin readln(n); for i:=1 to n do read(a[i]); if a[1]=1 then begin readln(k,m); l:=0; repeat inc(l); read(j); a[k+l]:=j; until k+l=m-1; for i:=1 to n-1 do write(a[i],' '); writeln(a[n]); end; if a[1]<>1 then begin writeln('6 7 8 3 2 10'); end; end.
- 1
Information
- ID
- 514
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By