赞
踩
要求:尾插法建立、节点的删除、改变节点数据域、查看所有节点的数据域。这四个功能分别用四个函数来实现。主函数里只定义链表的头指针。
初次实践
- #include <stdio.h>>
- #include <stdlib.h>
- #include <stdbool.h>
- #define ElemType int
-
- typedef struct LNode
- {
- ElemType Data;
- struct LNode *Next;
- }LNode,*LinkList;
-
- void PrintList(LinkList L)
- {
- LinkList p;
- p = L->Next;
- printf("链表元素如下:\n");
- while(p!=NULL)
- {
- printf("%d ",p->Data);
- p = p->Next;
- }
- printf("\n");
- }
-
- LinkList CreateList_Tail(LinkList L)
- {
- int x;
- L = (LNode*)malloc(sizeof(LNode));
- LNode*s,*r = L;
- scanf("%d",&x);
- while(x!=9999)
- {
- s = (LNode*)malloc(sizeof(LNode));
- s->Data = x;
- r->Next = s;
- r = s;
- scanf("%d ",&x);
- }
- r -> Next = NULL;
- return L;
- }
-
- LinkList del_num(LinkList L,int target)
- {
- if(L->Next ==NULL)
- {
- printf("该链表为空!\n");
- return L;
- }
- if(L->Next->Data ==target )
- {
- L->Next =L->Next ->Next;
- return L;
- }
- LNode *pre = L;
- LNode *cur = L->Next ;
- while(cur!=NULL&&cur->Data !=target)
- {
- pre = cur;
- cur = cur->Next;
- }
- if(cur!=NULL)
- {
- pre->Next = cur->Next ;
- free(cur);
- }
- return L;
- }
-
- LinkList update(LinkList L,int add,int newElem)
- {
- int i = 0;
- LNode *temp = L;
- temp = temp->Next ;
- for(i=0;i<add;i++)
- {
- temp = temp->Next;
- }
- temp->Data = newElem;
- return L;
- }
-
- int main()
- {
- LinkList L;
- int num;
- int add;
- int newelem;
-
- printf("尾插法建立单链表\n");
- L = CreateList_Tail(L);
- PrintList(L);
-
- printf("输入要删除的数:\n");
- scanf("%d",&num);
- LinkList *new_L;
- new_L = del_num(L,num);
- PrintList(new_L);
-
- printf("输入要修改的数");
- scanf("%d %d",&add,&newelem);
- L = update(L,add,newelem);
- PrintList(L);
-
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。