单链表作业

本文介绍了如何在C语言中实现链表数据结构,包括初始化链表、打印链表、插入元素、删除元素以及内存地址的使用。通过appendInsertDeleteTest函数展示了这些操作的实践应用。
摘要由CSDN通过智能技术生成

#include<stdio.h>
#include<malloc.h>

typedef struct linkNode
{
    char data;
    struct linkNode*next;
 } LNode,*LinkList,*NodePtr;
 
 LinkList initLinkList(){
     NodePtr p=(NodePtr)malloc(sizeof(LNode));
     p->data='\0';
     p->next=NULL;
     return p;
 }
 
 void printList(NodePtr pH){
     NodePtr q=pH->next;
     while(q!=NULL){
         printf("%c",q->data);
         q=q->next;
     }
     printf("\r\n");
 }
 void appendElement(NodePtr pH,char pC){
     NodePtr p,q;
     
     q=(NodePtr)malloc(sizeof(LNode));
     q->data=pC;
     q->next=NULL;
     
     p=pH;
     while(p->next!=NULL){
         p=p->next;
     }
     p->next=q;
 }
 void InsertElement(NodePtr pH,char pC,int Position){
     NodePtr p,q;
     
     p=pH;
     for(int i=0;i<Position;i++){
         p=p->next;
         if(p==NULL){
             printf("The position %d is beyond the scope of the list.",Position);
             return;
         }
     }
     q=(NodePtr)malloc(sizeof(LNode));
     q->data=pC;
     printf("linking\r\n");
     q->next=p->next;
     p->next=q;
 }
 void deleteElement(NodePtr pH,char pC){
     NodePtr p,q;
     p=pH;
     
     while((p->next!=NULL)&&(p->next->data!=pC)){
         p=p->next;
     }
     if(p->next==NULL){
         printf("Cannot delete %c\r\n",pC);
         return;
     }
     q=p->next;
     p->next=q->next;
     
     free(q);
 }
 
 void appendInsertDeleteTest(){
     NodePtr tempList=initLinkList();
     printList(tempList);
     
     appendElement(tempList,'H');
     appendElement(tempList,'e');
     appendElement(tempList,'l');
     appendElement(tempList,'l');
     appendElement(tempList,'o');
     appendElement(tempList,'!');
     printList(tempList);
     
     deleteElement(tempList,'e');
     deleteElement(tempList,'a');
     deleteElement(tempList,'o');
     printList(tempList);
     
     InsertElement(tempList,'o',1);
     printList(tempList);
 }
 
 void basicAddressTest(){
     LNode N1,N2;
     
     N1.data=4;
     N1.next=NULL;
     
     N2.data=6;
     N2.next=NULL;
     
     printf("The first node:%d,%d,%d\r\n",&N1,&N1.data,&N1.next);
     printf("The second node:%d,%d,%d\r\n",&N2,&N2.data,&N1.next);
     N1.next=&N2;
 }
 int main(){
     appendInsertDeleteTest();
     return 0;
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值