线性表的输入输出查找删除插入(链式,头插入)

来源:互联网 发布:无基础学编程 编辑:程序博客网 时间:2024/04/29 09:52
#include<stdio.h>#include<malloc.h>#define error -1typedef struct LNode{int data;struct LNode *next;}LNode,*LinkList;LNode *create_LinkList(void){int data;LNode *head,*p,*q;head=(LNode *)malloc(sizeof(LNode));head->next=NULL;while(1){scanf("%d",&data);if(data==0)break;p=(LNode *)malloc(sizeof(LNode));p->data=data;p->next=head->next;head->next=p;}return(head);}void PrintLinkList(LNode *head){LNode *p;p=head->next;if(p!=NULL)do{printf("%d",p->data);p=p->next;}while(p!=NULL);}int Get_Elem(LNode *L,int i){int j;LNode *p;p=L->next;j=1;while(p!=NULL&&j<i){p=p->next;j++;}if(j!=i)return(error);else return(p->data);}void Insert_LNode(LNode *L,int i,int e){int j=0;LNode *p,*q;p=L->next;while(p!=NULL&&j<i-1){p=p->next;j++;}if(j!=i-1)printf("no");else {q=(LNode *)malloc(sizeof(LNode));q->data=e;q->next=p->next;p->next=q;}}void Delete_LinkList(LNode *L,int i){int j=1;LNode *p,*q;p=L;q=L->next;while(p->next!=NULL&&j<i){p=q;    q=q->next;    j++;}if(j!=i)printf("no");else{p->next=q->next;free(q);}}void main(){LNode *pt;int t,a,b;pt=create_LinkList();PrintLinkList(pt);scanf("%d",&t);b=Get_Elem(pt,t);printf("%d",b);scanf("%d,%d",&t,&a);Insert_LNode(pt,t,a);    PrintLinkList(pt);scanf("%d",&t);Delete_LinkList(pt,t);    PrintLinkList(pt);}

0 0
原创粉丝点击