|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是:输入第1行为1个正整数n,表示当前单链表长度;第2行为n个空格间隔的整数,为该链表n个元素的数据域值。第3行为1个正整数m,表示对该链表施加的操作数量;接下来m行,每行表示一个操作,为2个或3个整数,格式为0 k d或1 k。0 k d表示在链表第k个结点后插入一个数据域值为d的结点,若k=0则表示表头插入。1 k表示删除链表中第k个结点,此时k不能为0。注:操作序列中若含有不合法的操作(如在长度为5的链表中删除第8个结点、删除第0个结点等),则忽略该操作。n和m不超过100000。
输入样例:
5
1 2 3 4 5
5
0 2 8
0 9 6
0 0 7
1 0
1 6
输出样例:
7 1 2 8 3 5
我的程序:
- #include<stdio.h>
- #include<malloc.h>
- typedef struct Node
- {
- int data;
- struct Node *Next;
- }Node,*LinkList;
- typedef struct Node* LinkList;
- void creatList(LinkList &L,int n)
- {
- L=(LinkList)malloc(sizeof(Node));
- L->Next=NULL;
- while(n--)
- {
- LinkList p=(LinkList)malloc(sizeof(Node));
- scanf("%d",&p->data);
- p->Next=L->Next;
- L->Next=p;
- }
- }
- int Listsize(LinkList &L)
- {
- int count=0;
- LinkList p;
- p=L;
- while(p!=NULL)
- {
- p=p->Next;
- count++;
- }
- return count;
- }
- int insertList(LinkList &L,int i,int e)
- {
- if(i>=Listsize(L))
- {
- return -1;
- }
- int j;
- LinkList p,s;
- p=L;
- j=0;
-
- while(p&&j<i-1)
- {
- p=p->Next;
- j++;
- }
-
- if(!p||j>i-1)
- {
- return -1;
- }
-
- s=(LinkList)malloc(sizeof(Node));
- s->data=e;
- s->Next=p->Next;
- p->Next=s;
- return 0;
- }
- int delList(LinkList &L,int i)
- {
- if(i==0||i>=Listsize(L))
- {
- return -1;
- }
- int j;
- LinkList p,s;
- p=L;
- j=0;
- while(p->Next&&j<i-1)
- {
- p=p->Next;
- ++j;
- }
-
- if(!(p->Next)||j>i-1)
- {
- return -1;
- }
- s=p->Next;
- p->Next=s->Next;
- if(p->data!=NULL)
- {
- p->data=s->data;
- }
- free(s);
- return 0;
- }
- void printList(LinkList &L)
- {
- LinkList p;
- p=L;
- while(p!=NULL)
- {
- p=p->Next;
- printf("%d ",p->data);
- }
- }
- int main()
- {
- int n,m,i,flag,k,data;
- LinkList list;
- scanf("%d",&n);
- if(n>=100000)
- {
- return 0;
- }
- creatList(list,n);
-
- scanf("%d",&m);
- if(m>=100000)
- {
- return 0;
- }
- for(i=0;i<m;i++)
- {
- scanf("%d",&flag);
- if(flag==0)
- {
- scanf("%d%d",&k,&data);
- insertList(list,k,data);
- }
- if(flag==1)
- {
- scanf("%d",&k);
- delList(list,k);
- }
- }
- printList(list);
- return 0;
- }
复制代码
|
|