线性链表的创建、查找、插入、删除(c语言)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性链表的创建、查找、插入、删除(c语言)
#include
#include
#define OK 1
#define ERROR 0
#define ElemType int
typedef int Status;
typedef struct LNode
{
ElemType data;
struct LNode *next;
ElemType *elem;
int cur;
}LNode, *LinkList;
void printList(LinkList &L)
{
LNode *q;
q=L;
q->next=L->next;
printf("您的线性链表为:");
while(q->next!=NULL)
{
q=q->next;
printf("%d ",q->data);
}
printf("\n");
}
Status ListInsert_L(LinkList &L,int i,ElemType e)
{
LNode *p,*s;
p=L;
int j=0;
while(p&&j p=p->next; ++j; } if(!p||j>i-1) return ERROR; s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return OK; } //在链表对应位置插入数字 Status ListDelete_L(LinkList &L,int i,ElemType e) { LNode *p,*q; p=L; int j=0; while(p->next&&j { p=p->next; ++j; } if(!(p->next)||j>i-1) return ERROR; q=p->next; p->next=q->next; e=q->data; free(q); printf("删除的数字是: %d\n",e); return OK; } //按位置删除 Status ListDelete(LinkList &L,int i,ElemType e) { LNode *p; i=1; p=L; while(e!=p->next->data) p=p->next; i++; } if(e==p->next->data) { p->next=p->next->next; printf("删除的数字所在位置是: %d\n",i); return OK; } else return ERROR; } //按数字删除 void CreateList_L(LinkList &L,int n) { struct LNode *p; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; printf("输入链表数据:"); for(int i=1;i<=n;i++) { p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); p->next=L->next; L->next=p; } } //创建链表 int LocateElem_L(LinkList &L,ElemType e) { LNode *p; int i=1; p=L->next; while(e!=p->data) { p=p->next; i++; } printf("您查找数字%d 在链表上的位置为:%d\n",e,i); return 0; }//查找 int main() { int i,n; LinkList myLinkList; printf("请输入链表中数字的数目:"); scanf("%d",&n); CreateList_L(myLinkList,n); printList(myLinkList); for( ; ; ) { printf("请选择操作:0、查找;1、插入;2、删除;3、退出\n请输入您的选择:" ); scanf("%d",&i); while(i<0||i>3) { printf("输入错误,请重新输入!\n请输入您的选择:"); scanf("%d",&i); } switch(i) { case 0: { int e; printf("输入想要查找的数字:"); scanf("%d",&e); LocateElem_L(myLinkList,e); break; } case 1: { int i,e; printf("输入想要插入数字的位置:"); scanf("%d",&i);