链表:用C/C++实现单链表的增删改查
标签:new col 输入 增删改 == 数据 使用 div 理解
最近复习了线性表,对链表这一部分遗忘最大,所以手动实现一下加深理解,附上C++代码:
#include using namespace std;
typedef struct LNode //定义一个结构体作为链表结构,有指针域和数据
{
int data;
struct LNode* next;
}LNode,*LinkList; //将 struct LNode重命名为LinkList方便使用
void dis(LinkList l) //输出列表
{
while (l->next != NULL)
{
l = l->next;
cout " " data;
}
cout endl;
}
LinkList insert(LinkList& l,int x) //头插
{
LNode* s = (LNode*)malloc(sizeof(LNode));
s->data = x;
s->next = l->next;
l->next = s;
return l;
}
int getNumber(LinkList l, int x)//按照值查找结点序号
{
int i = 0;
while (l != NULL)
{
i++;
if (l->data == x)
{
cout "find x=" " ,num=" 1 endl;
break;
}
l = l->next;
}
return i;
}
LNode* getElement(LinkList l, int no)//按照序号查找结点
{
LNode*s = l->next;
int j = 1;
while (s->next != NULL && j no)
{
s = s->next;
j++;
}
return s;
}
void delect(LinkList &l, int no)//删除指定序号的节点
{
LNode* s = getElement(l, no - 1);
LNode* p;
p = s->next;
s->next = p->next;
cout "delect " data " success" endl;
free(p);
}
int main() //依次实现增,查,查,删
{
LinkList l;
LNode* s;
int x;
l = (LinkList)malloc(sizeof(LNode)); //head
l->next = NULL;
cin >> x;
do
{
s = (LNode*)malloc(sizeof(LNode));
s->data = x;
s->next = l->next;
l->next = s;
cout "new " data endl;
cin >> x;
} while (x>0); //输入负数后停止
dis(l);
l = insert(l, 100);
dis(l);
cout "no." 2 " is " 2)->data endl;
getNumber(l, 1);
delect(l, 2);
dis(l);
return 0;
}
链表:用C/C++实现单链表的增删改查
标签:new col 输入 增删改 == 数据 使用 div 理解
原文地址:https://www.cnblogs.com/murenma/p/13258605.html
评论