这个软件可以运行链表么
c4droid吧
全部回复
仅看楼主
level 3
buxhbdi 楼主
我编了一个链表,通过编译,但是一运行就这样
2016年07月24日 06点07分 1
level 3
buxhbdi 楼主
代码如下#include <iostream>
using namespace std;
struct Node{
int Data;
Node*next;
};
class list{
Node*head;
public:
list(){
head=NULL;
}
void insertlist(int aData,int bData);
void deletelist(int aData);
void outputlist();
Node*gethead(){return head;}
};
void list::insertlist(int aData,int bData){
Node*p,*q,*s;
s=(Node*)new(Node);
s->Data=bData;
p=head;
if(head==NULL){
head=s;
s->next=NULL;
}
else if(p->Data==aData){
head=s;
s->next=p;
}
else{
while(p->Data!=aData&&p->next!=NULL){
q=p;
p=p->next;
}
if(p->Data==aData){
q->next=s;
s->next=p;
}
else{
q->next=s;
s->next=NULL;
}
}
}
void list::deletelist(int aData){
Node*p,*q;
p=head;
if(head==NULL)
return;
else if(p->Data==aData){
q->next=p->next;
delete p;
}
else{
while(p->Data!=aData&&p->next!=NULL){
q=p;
p=p->next;
}
if(p->Data==aData){
q->next=p->next;
delete p;
}
}
}
void list::outputlist(){
Node*current;
current=head;
while(current->next!=NULL){
cout<<current->Data<<" ";
current=current->next;
}
cout<<endl;
}
int main()
{
list A,B;
int Data[10]={25,41,16,98,5,67,9,55,1,121};
A.insertlist(0,Data[0]); //建立链表A首结点
for(int i=1;i<10;i++)
A.insertlist(0,Data[i]); //顺序向后插入
cout<<"\n链表A:";
A.outputlist();
A.deletelist(Data[7]);
cout<<"删除元素Data[7]后";
A.outputlist();
B.insertlist(0,Data[0]); //建立链表B首结点
for(int i=0;i<10;i++)
B.insertlist(B.gethead()->Data,Data[i]); //在首结点处顺序向后插入
cout<<"\n链表B:";
B.outputlist();
B.deletelist(67);
cout<<"删除元素67后";
B.outputlist();
}
2016年07月24日 06点07分 2
level 14

2016年07月24日 09点07分 5
level 13
编译器说,怪我咯,怪我还没智能到能智能修复你的代码错误
2016年07月25日 08点07分 6
level 11
#include<stdio.h>
template < typename T > class List {
class Node {
public:T content;
Node *next;
};
unsigned int index = 0, size = 0;
Node *head = NULL, *tail = NULL;
public:
List() {
tail = head = new Node;
head->next = NULL;
index = 0;
}
~List() {
clear();
delete head;
head = NULL;
}
inline void add(T newContent) {
Node *n = new Node();
n->content = newContent;
n->next = NULL;
size++;
tail->next = n;
tail = n;
}
inline void add(T newContent, unsigned int index) {
if (index <= size) {
if (index == size) {
add(newContent);
} else {
Node *newNode = new Node;
newNode->content = newContent;
Node *p = head;
while (index--) {
p = p->next;
}
newNode->next = p->next;
p->next = newNode;
size++;
}
}
}
inline T & operator [] (unsigned int index) {
Node *p = head;
if (index < size) {
while (index--) {
p = p->next;
}
return p->next->content;
}
return head->content;
}
inline T & last() {
return tail->content;
}
inline bool remove(unsigned int index) {
if (index < size) {
Node *p = head;
while (index--) {
p = p->next;
}
Node *freeNode = p->next;
if (p->next = p->next->next) {
delete freeNode;
} else {
tail = p;
}
size--;
return true;
} else {
return false;
}
}
inline void clear() {
Node *position = head;
while (position->next) {
Node *nextNode = position->next->next;
delete position->next;
position->next = nextNode;
size--;
}
}
inline int getSize() {
return size;
}
};
int main() {
List < int >list;
list.add(8);
list.add(5);
list.add(3);
list.add(10086, 1);
for (int i = 0; i < list.getSize(); i++) {
printf("%d :%d\n", i, list[i]);
}
List < char *>l2;
l2.add("L");
l2.add("Z");
l2.add("S");
l2.add("B");
for (int i = 0; i < l2.getSize(); i++) {
printf("%d :%s\n", i, l2[i]);
}
}
2016年07月25日 09点07分 7
1