• 大小: 1.97MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-08
  • 语言: C/C++
  • 标签: 单链表  增删改查  

资源简介

VS2008运行环境 c语言实现单链表增删改查操作 并输出到控制台上

资源截图

代码片段和文件信息

// CNode.cpp : 定义控制台应用程序的入口点。
//

#include “stdafx.h“
#include “windows.h“

typedef struct _Node
{
char data;
_Node *next;
}Node;
void insertNode(Node **headint ichar e);
void printNode(Node **head); 
void deleteNode(Node **headint i); 

int _tmain(int argc _TCHAR* argv[])
{
Node *h;     
h = NULL; 
insertNode(&h0‘a‘);     
insertNode(&h1‘b‘);     
insertNode(&h0‘c‘);     
insertNode(&h4‘d‘);     
printNode(&h);     
deleteNode(&h1);     
printNode(&h);     
deleteNode(&h0);     
printNode(&h);     
deleteNode(&h1);     
printNode(&h); 
return 0;
}
/*  *插入操作要确保要插入位置的前一个节点不为空并标记出其位置指针 
*因此要确保q的存在 
*节点从0计数 
第0个节点是头指针所指节点 */
void insertNode(Node **headint ichar e)
{       
Node *q;  
Node *p;     
int j;      
p = *head;   
if(i == 0)     
{
//插入位置在头指针处 头指针为空 不为空 时的情况 
if((p = (Node *)malloc(sizeof(Node))) == NULL)   
{        
//节点空间申请失败  
}        
p->next = *head;    
p->data = e;      
*head = p;        
printf(“%c\n“e);    
return;     
}       
q = *head; 
j = 0;   
while(p != NULL && j < i)
{         
q = p ;    
p = p->next;  
j++;    
}       
if(i == j) 
{        
if((p = (Node *)malloc(sizeof(Node))) == NULL)
{            
//节点空间申请失败
}      
p->data = e; 
p->next = q->next; //将新申请的节点next指向当时的操作节点 
q->next = p;     //将原操作节点next指向新申请的节点       
printf(“%c\n“e);       
return;     
}     
//当 i != j 时的情况输出error     
printf(“插入位置为%d的节点失败 !\n“i);

void printNode(Node **head) 
{     
Node *p = *head;    
if (p == NULL)    
{        
printf(“%s\n“NULL);
}    
while(p != NULL)     
{         
printf(“%c\n“p->data);  
p = p->next;  
}       
}   
/* 
*删除操作要求是 要删除节点和其前一个节点都不可为空并标记其位置指针  
*因此要确保p q都不为空 
*节点从0计数 
第0个节点是头指针所指节点 */ 
void deleteNode(Node ** head  int i ) 
{           
Node * q;//标识要删除节点的前一个节点  
Node * p;//标识要删除的节点    
int j;          
if(*head == NULL)  
{         
//empety node list        
printf(“删除元素不存在!\n“); 
return;   
}   
p = *head;    
if(i == 0)   
{        
*head = p->next; 
free(p);      
printf(“成功删除位置为%d的元素!\n“i);
//p = NULL;        
return ;     
}       
q = *head;  
j = 0;   
while(p->next != NULL && j < i) 
{        
q = p;   
p = p->next;   
j ++;    
}       
if(i == j)    
{        
q->next = p->next; 
free(p);   
printf(“成功删除位置为%d的元素!\n“i); 
return;    
//p = NULL;  
}    
//当 i != j 时的情况输出error  
printf(“要删除位置为%d的元素不存在!\n“i);  
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2887  2012-09-21 18:11  CNode\CNode.cpp

     文件    7695360  2012-09-21 18:11  CNode\CNode.ncb

     文件        875  2012-09-21 17:54  CNode\CNode.sln

    ..A..H.     11264  2012-09-21 18:11  CNode\CNode.suo

     文件       4492  2012-09-21 17:54  CNode\CNode.vcproj

     文件       1427  2012-09-21 18:11  CNode\CNode.vcproj.MICROSO-BJT4QU3.Administrator.user

     文件       1171  2012-09-21 17:54  CNode\ReadMe.txt

     文件        210  2012-09-21 17:54  CNode\stdafx.cpp

     文件        233  2012-09-21 17:54  CNode\stdafx.h

     文件        498  2012-09-21 17:54  CNode\targetver.h

     目录          0  2012-09-21 18:12  CNode

----------- ---------  ---------- -----  ----

              7718417                    11


评论

共有 条评论