线性链表常见的操作:插入,删除,查找等等。以下采用尾插法建立的线性链表。
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;
struct node
{
int val;
node *next;
};
node *head,*p,*q;
void Init()
{
head = new node();
q = head;
}
void Insert(int x) //尾插法
{
p = new node();
p->val = x;
q->next = p;
q = p;
q->next = NULL;
}
int Find(node *t,int k) //查找第k个元素的值
{
int cnt = 1;
node *p = t;
p = t->next;
while(p != NULL && (cnt < k))
{
p = p->next;
cnt++;
}
return p->val;
}
bool Search(node *t,int x) //查找键值为x的元素是否在链表中
{
node *p = t;
while(p != NULL)
{
if(p->val == x) return true;
p = p->next;
}
return false;
}
void Delete(node *t,int x)
{
node *q = t,*p;
p = q->next;
while(p != NULL && (p->val != x))
{
q = p;
p = p->next;
}
q->next = p->next;
delete p;
}
void Print()
{
node *t = head;
t = t->next;
while(t != NULL)
{
printf("%d ",t->val);
t = t->next;
}
cout<<endl;
}
int main()
{
int n,x;
while(cin>>n)
{
Init();
while(n--)
{
cin>>x;
Insert(x);
}
Print();
}
return 0;
}
标签:node,val,int,next,链表,while,线性,基本操作,NULL From: https://blog.51cto.com/u_16146153/6388665