题目描述
建立长度为n的单链表,删除第i个结点之前的结点。
输入
第一行为自然数n,表示链式线性表的长度; 第二行为n个自然数表示链式线性表各元素值; 第三行为指定的删除参数i。输出
指定删除位置合法时候,输出删除元素后的链式线性表的所有元素,元素之间用一个空格隔开。 输入不合法,输出"error!"。样例输入
5 1 2 3 4 5 3样例输出
1 3 4 5#include<iostream> #include<malloc.h> #include<cstring> using namespace std; #define INF 0x3f3f3f3f #define MAX(x,y) (x>y?x:y) #define MIN(x,y) (x>y?y:x) #define M 1000 typedef struct LNode { int data; struct LNode*next; }LNode; void InitLNode(LNode*&L) { L=(LNode*)malloc(sizeof(LNode)); L->next=NULL; } void createLNode(LNode*&L,int n) { LNode*temp=L; for(int i=0;i<n;i++) { LNode*p=(LNode*)malloc(sizeof(LNode)); cin>>p->data; p->next=NULL; temp->next=p; temp=p; } } void outLNode(LNode*L) { LNode*temp=L; while(temp->next!=NULL) { temp=temp->next; cout<<temp->data<<" "; } } int deleteLNode(LNode*&L,int pos,int n) { LNode* temp=L; int i=0; if(pos<2||pos>n) { cout<<"error!"; return 0; } while(i<pos-2) { temp=temp->next; i++; } LNode*p=temp->next; temp->next=p->next; free(p); return 1; } int main() { LNode*L; InitLNode(L); int n; cin>>n; createLNode(L,n); int pos; cin>>pos; int num=deleteLNode(L,pos,n); if(num==1) { outLNode(L); } return 0; }
SWUST OJ953: 单链表的删除操作的实现
最新推荐文章于 2024-04-09 10:33:58 发布